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

    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
    556
    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.556
    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

    Contractor for Fresche Solutions Inc.
    Anwendungsmodernisierung, Beratung, Schulungen im Bereich RPG, SQL und Datenbank

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    4.853
    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
    18.258
    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: http://www.fuerchau.de/software/upload400.htm
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Sep 2018
    Beiträge
    37
    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
    159
    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
    4.853
    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/

Ähnliche Themen

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

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •