PDA

View Full Version : Neue Tabelle anlegen und automatisch current_user & current_timestamp hinterlegen



katdom
19-08-17, 22:04
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.

B.Hauser
20-08-17, 10:14
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.


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.

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.


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

katdom
20-08-17, 13:11
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.