OVH Cloud OVH Cloud

Problème de syntaxte sur columns_updated()

1 réponse
Avatar
jerome
Bonjour,

J'ai un problème de syntaxte sql sur l'écriture d'un trigger.
je voudrais tester si la 4ème colonne de ma table a été modifiée

CREATE TRIGGER myTrigger

ON myTable

AFTER UPDATE AS

IF (COLUMNS_UPDATED() & 8 ) = 8 (correspondant à power(2,(4-1))

BEGIN
ici je voudrais insérer une ligne dans une table audit
INSERT INTO AUDIT
(nomTable,
oldValue,
newvalue)

VALUES
(le nom de la table concernée,
select del myField from deleted del,
select ins.myField from inserted ins)

END

Mais d'une part, la condition sur le columns_updated ne fonctionne pas comme
je le souhaiterais : le trigger se déclenche à chaque fois.
Et, d'autre part je ne parviens pas à écrire dans une seule requête le "from
inserted" et le "from deleted"

Merci pour votre aide

1 réponse

Avatar
jerome
Bonjour,

J'ai trouvé la solution (sur le net, pas moi...) que je transmets à ceux que
cela peut intéresser

CREATE TRIGGER myTrigger

ON myTable

AFTER UPDATE AS

BEGIN

IF UPDATE(myColumn)

BEGIN

INSERT INTO AUDIT
(nomTable,
oldValue,
newValue)

SELECT
('myTable',
del.myColumn,
ins.myColumn)

FROM deleted del
INNER JOIN inserted ins
ON del.myTableKey = ins.myTableKey (clé primaire de la table)
AND del.myColumn<> ins.myColumn;

END
END


"jerome" wrote in message
news:
Bonjour,

J'ai un problème de syntaxte sql sur l'écriture d'un trigger.
je voudrais tester si la 4ème colonne de ma table a été modifiée

CREATE TRIGGER myTrigger

ON myTable

AFTER UPDATE AS

IF (COLUMNS_UPDATED() & 8 ) = 8 (correspondant à power(2,(4-1))

BEGIN
ici je voudrais insérer une ligne dans une table audit
INSERT INTO AUDIT
(nomTable,
oldValue,
newvalue)

VALUES
(le nom de la table concernée,
select del myField from deleted del,
select ins.myField from inserted ins)

END

Mais d'une part, la condition sur le columns_updated ne fonctionne pas


comme
je le souhaiterais : le trigger se déclenche à chaque fois.
Et, d'autre part je ne parviens pas à écrire dans une seule requête le


"from
inserted" et le "from deleted"

Merci pour votre aide