[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Sep 2018
    Beiträge
    94

    SQL Datum Unterlassungswert

    Ich habe ein Verständnisproblem mit SQL. Wenn ich einen Insert in die Datenbank (DDS-Beschrieben) mache, setzt er alle Datumsfelder (ISO-Format) auf das aktuelle Datum.

    Als Beispiel habe ich eine Datei, welche eine alphanumerisches Feld und ein Datum beinhaltet. Wenn ich einen Insert mache in dem ich nur den alphanumerischen Wert mit "Insert" ausgebe bzw. einfüge, setzt er das Datumsfeld auf das aktuelle Datum (2019-11-12).

    Wo oder womit kann ich dieses Verhalten steuern ohne die DDS-Beschreibung aufzugeben?

    Kann ich dieses Verhalten SQL übergreifend steuern?

  2. #2
    Registriert seit
    Jan 2007
    Beiträge
    904
    Hatte einen ähnlichen Fall, allerdings mit CPYF. Ich denke nicht, dass es mit SQL was zu tun hat.
    Verdankenswert hat mir seinerzeit Baldur auf die Sprünge geholfen.

    siehe hier:
    http://newsolutions.de/forum-systemi...843#post106843
    kf

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    Wenn Datensätze geschrieben werden, unabhängig ob die Dateien mit SQL oder DDS beschrieben wurden, und Feld-Werte nicht explizit angegeben wurden, wird der Default-Wert stattdessen eingefügt.
    Der Default-Wert bei Datums-Feldern ist das aktuelle Datum bzw. die aktuelle Zeit bzw. die aktuelle Zeit-Marke.
    Wenn Du andere Default-Werte möchtest, muss Du diese explizit in der Definition der Datei setzen.
    Für DDS gibt es auch das Schlüssel-Wort DFT, mit dem ein Default-Wert festgelegt werden kann.

    Alternativ, kannst Du ja den gewünschten Default-Wert für die Spalte beim Insert angeben.

    Native I/O arbeitet anders als SQL, d.h. da wird immer der komplette Datensatz geschrieben. Damit wird immer der Wert aus der (internen) Datenstruktur des Datensatzes übernommen.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    Zitat Zitat von B.Hauser Beitrag anzeigen
    Native I/O arbeitet anders als SQL, d.h. da wird immer der komplette Datensatz geschrieben. Damit wird immer der Wert aus der (internen) Datenstruktur des Datensatzes übernommen.

    Birgitta
    ... es sei denn, dass man über ein logische Datei oder View(was man immer tun sollte) schreibt, die das Feld nicht enthält.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Das unterscheidet eben den Rest der Felder von Datum/Zeit/Zeitmarke.
    Alle anderen Felder erhalten einen Standardwert je nach Feldtyp.
    - Varlen-Felder mit Länge 0
    - Char/Nchar mit Space/Blank
    - Binary mit x'00'
    - Zahlfelder (int, dec, double, decflt, ...) eben die 0
    Nur Datumsfelder eben das Current Date/Time/Timestamp.

    Wer das nicht will kann ja ebenso ALWNULL (oder NOT NULL bei SQL weglassen) verwenden.
    In diesem Fall ist der Unterlassungswert NULL.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Sep 2018
    Beiträge
    94
    Hallo allerseits,

    herzlichen Dank für eure Mühe.

    Hat mir sehr geholfen und es ist nun einiges klarer!

    Frank

  7. #7
    Registriert seit
    Nov 2009
    Beiträge
    208
    es sei denn, dass man über ein logische Datei oder View(was man immer tun sollte) schreibt
    Können Views, die mehr als eine Tabelle beinhalten, auch mit update / write verarbeitet werden?
    Das bekomme ich nicht hin (letzte Versuch ist schon etwas her, daher weis ich den Fehler nicht mehr)
    Dietlinde Beck

  8. #8
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    Zitat Zitat von dibe Beitrag anzeigen
    Können Views, die mehr als eine Tabelle beinhalten, auch mit update / write verarbeitet werden?
    Das bekomme ich nicht hin (letzte Versuch ist schon etwas her, daher weis ich den Fehler nicht mehr)
    Dietlinde Beck
    An SQL Views kann man einen instead Trigger hängen (den man allerdings mit RLA nicht verarbeiten kann). DDS join LF sind read only, bei SQL kann man nur Felder aus einer Datei updaten. Für das obige Beispiel tritt das Problem allerdings sowieso nicht auf.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. SQL BIF bei falschem Datum
    By Peet in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 06-10-17, 23:35
  2. SQL Datum
    By dholtmann in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 03-05-16, 10:35
  3. SQL Datum konvertieren
    By weidenhammer in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 07-05-15, 12:37
  4. Datum berechnen mit CL
    By j.k. in forum NEWSboard Programmierung
    Antworten: 12
    Letzter Beitrag: 15-11-10, 17:31
  5. Datum + 10 Tage in RPG
    By HoScHiE in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 06-08-01, 15:47

Tags for this Thread

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •