[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jul 2017
    Beiträge
    14

    Neue Tabelle anlegen und automatisch current_user & current_timestamp hinterlegen

    Hallo an alle User,

    ich frage mich mometan folgendes, kann ich wenn ich eine neue Tabelle mittels SQL erstelle, automatisch dafür sorgen das sobald eine neues record hinzugefügt wird der current_user & der current_timestamp hinterlegt wird?

    Also ähnlich wie bei "generated alwasys as identity".

    Mometan mache ich das immer bei meinem Insert-Statements, aber wäre ja klasse wenn die Tabelle das selber übernimmt.

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Wenn Du beim Insert nur den aktuellen Benutzer und die aktuelle Zeitmarke haben willst, genügt beim Erstellen für die entsprechenden Felder die Default-Werte USER (Spalte muss mind. VarChar(18) angelegt werden) bzw Current_Timestamp anzugeben.

    Code:
    Create table YourSchema.MyTable
     (MyInt  Integer     Not NULL Default 0,
      MyChar VarChar(20) Not NULL Default '',
      MyTS   Timestamp   Not NULL Default Current_Timestamp,
      MyUser VarChar(18) Not NULL Default User );
    Beim Insert werden dann diese Felder nicht oder mit dem Platzhalter DEFAULT übergeben.
    Code:
      Insert into mytable (myInt, myChar)
      Values(3, 'CCC');
      
      Insert into MyTable 
      Values(1, 'ABC', Default, Default);
    Wenn Du die Werte nicht nur beim Insert gesetzt haben willst, gibt es für Zeitmarken-Spalten bereits seit Release 6.1 die Erweiterung:
    Generated Always For Each Row on Update as Row Change Timestamp

    Für alphanumerische Spalten, kann seit Release 7.3 mit der Erweiterung Generated Always as (Session_User) der aktuelle Benutzer bei Insert und Update gesetzt werden.
    Neben dem Benutzer können noch eine ganze Reihe von Special Registers und System Globale Variablen bei der Spalten Definition mit Generated Always gesetzt werden.

    Code:
    Create Table qtemp.MYTABLE
       (MYINT  Integer       Not Null Default 0,
        MYCHAR Varchar(50)   Not Null Default '',
        MYTS   Timestamp     Not NULL Generated Always For Each Row 
                                      On Update as Row Change Timestamp,
        MYUSER Varchar(128)  Not NULL Generated Always As (Session_User) );
    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

  3. #3
    Registriert seit
    Jul 2017
    Beiträge
    14
    Perfekt! Vielen Dank Birgitta, das ist genau das was ich gesucht habe und das auf einem Sonntag
    Ich wünsche dir noch einen schönen Restsonntag.

Similar Threads

  1. Leeres Overlay anlegen
    By Wwilson in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 16-12-16, 12:20
  2. Journaleinträge anlegen
    By Wirnitzer in forum IBM i Hauptforum
    Antworten: 13
    Letzter Beitrag: 29-11-16, 08:46
  3. Blob-Felder anlegen
    By infomio in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 25-03-03, 11:30
  4. PTF über IPL anlegen
    By Wirnitzer in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 07-08-02, 13:31
  5. DB2 RDB Datenbank anlegen??
    By Arbi in forum IBM i Hauptforum
    Antworten: 10
    Letzter Beitrag: 17-10-01, 11:23

Berechtigungen

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