[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Dec 2007
    Beiträge
    4

    CREATE TABLE mit DEFAULT Wert aus Funktion

    Hallo Zusammen

    Ich muss eine Tabelle mit einer TIMESTAMP Spalte erstellen welches als Default Wert die UTC-Zeit liefert.

    Da meine OS/400 Version V5R2M0 ist erhalte ich die UTC-Zeit meines Wissens nach nur mit der Formel
    CURRENT TIMESTAMP - CURRENT TIMEZONE
    Die obengenannte Formel verträgt sich leider nicht mit einem CREATE TABLE Statement.
    Beispiel:
    create table testtab (dat timestamp default current timestamp - current timezone)
    Dabei erscheint die Fehlermeldung:
    ERROR [42000] [IBM][iSeries Access ODBC-Treiber][DB2 UDB]SQL0104 - Token - ungültig. Gültige Token: AS NO FOR NOT FILE WITH CCSID CHECK UNIQUE DEFAULT PRIMARY.
    Nun meine Fragen:
    Gibt es hierzu eine Umgehungslösung welche in einem CREAT TABLE (ohne Trigger) erstellt werden kann?
    Können Funktionen generell nicht in DEFAULT-Klauseln verwendet werden?
    Funktionieren meine "Anforderungen" in neueren OS/400 Releases?

    Vielen Dank

    Daniel

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.361
    Die ist leider eine Sache für einen Insert-Trigger.
    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

  3. #3
    Registriert seit
    Apr 2005
    Beiträge
    104
    Ganz pragmatisch würde ich einfach den normalen Current Timestamp vorsehen, und mir die Current Timezone in einem weiteren Feld merken.

    Wenn mans wirklich in UTC umrechnen muß, und es später im Prozeß erst einmal umgerechnet hat, kann man das ja entsprechend updaten. Du hättest dann nur eine zusätzliche Spalte, die nicht angefordert worden war.

  4. #4
    Registriert seit
    Dec 2007
    Beiträge
    4
    Wieso einfach wenn es auch kompliziert geht ....

    Ich hab da noch einige Rahmenbedingungen, weshalb ich keine zusätzliche Spalte erstellen kann oder auch keinen Default-Wert per Insert-Statement übergeben kann.

    Grob gesagt geht es um ein SQL Übersetzungsprogramm welches transparent für MS SQL Applikationen eingesetzt werden kann. Dadurch wird der Applikation vorgegaukelt, dass die Applikation mit einer MS SQL DB verbunden ist, in Wirklichkeit aber mit der iSeries kommuniziert.

    Im grossen und ganzen läuft die Sache sehr zufriedenstellend. Klar ist, dass nicht alles 100% übersetzt werden kann. Wie es auch das Beispiel mit dem DEFAULT-Wert zeigt. Aber Probleme sind ja da um gelöst zu werden.

    Bevorzugteste Lösung wäre eine UDF welche in der DEFAULT-Klausel angegeben werden könnte. Da dies nicht geht muss ich mich langsam mit dem Gedanken an einem INSERT-Trigger anfreunden ...

Similar Threads

  1. CREATE FUNCTION mit select im Bauch ?
    By cheffe1008 in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 21-09-06, 16:05
  2. CREATE TABLE
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 02-08-05, 13:52
  3. SQL - Create Table X/Y Angabe Satzformat
    By JonnyRico in forum NEWSboard Programmierung
    Antworten: 25
    Letzter Beitrag: 05-11-04, 15:17
  4. CREATE TABLE
    By Willi1 in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 03-05-02, 08:38
  5. DATFMT bei CREATE TABLE
    By lorenzen in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 21-03-01, 13:44

Berechtigungen

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