Je dois placer un userstamp dans une table et je n'ai pas réussi à comprendre comment l'instruction GENERATED FOR CHAQUE ROW ON UPDATE AS fonctionne avec la variable SESSION_USER dans DB2 10,5 (LUW).DB2: Comment être généré toujours comme instruction pour travailler avec l'utilisateur de session
Managed pour obtenir une mise en œuvre de travail en utilisant une fonction qui a une variable fausse pour forcer l'évaluation dans les déclarations de mise à jour:
CREATE OR REPLACE FUNCTION XXX.CURRENT_USER(tmp varchar(128))
SPECIFIC xxx.XXX_CURRENT_USER
RETURNS VARCHAR(128)
CONTAINS SQL DETERMINISTIC NO EXTERNAL ACTION
BEGIN
RETURN session_user ;
END
GO
CREATE TABLE xxx (
i INTEGER,
t VARCHAR(128) GENERATED ALWAYS AS (XXX.CURRENT_USER(i))
)
Cependant, serait bien ont moins la mise en œuvre « aki » pour une chose de base comme celui-ci . Pour les horodatages, il y a cette instruction "FOR CHAQUE ROW ON UPDATE COMME ROW CHANGE TIMESTAMP" mais pas d'équivalent pour les autres variables de registre. L'aide est très appréciée
Merci pour vos commentaires. Malheureusement, cela ne fonctionne pas avec les instructions de mise à jour. Je voudrais automatiquement piéger qui a modifié la ligne sans utiliser de déclencheurs. – JMX
@JMX. . . Je ne pense pas que votre code le fera non plus. Je pense que vous devez utiliser un déclencheur. –
En fait, c'est le cas si la fonction dépend des valeurs de ligne, comme dans le cas de la colonne "i". – JMX