MS SQL Server n'a pas de déclencheurs de niveau ligne, correct? Si j'avais besoin d'insérer une ligne à l'intérieur d'un trigger puis d'insérer une autre ligne, en fonction du résultat du premier insert, un curseur serait-il la meilleure solution?Alternative aux déclencheurs de niveau ligne?
Par exemple, est-il une meilleure façon de le faire:
CREATE TABLE t1 (foo int)
CREATE TABLE t2 (id int IDENTITY, foo int)
CREATE TABLE t3 (t2_id int)
GO
CREATE TRIGGER t1_insert_trg ON t1 FOR INSERT AS
DECLARE c CURSOR FOR
SELECT foo FROM inserted
DECLARE @foo int
OPEN c
FETCH NEXT FROM c INTO @foo
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO t2 (foo) VALUES (@foo)
INSERT INTO t3 (t2_id) VALUES (@@IDENTITY)
FETCH NEXT FROM c INTO @foo
END
CLOSE c
DEALLOCATE c
Merci, j'aime beaucoup votre solution avec OUTPUT! – Alvis