Je dois faire l'insert d'une table complète vers une autre ayant une clé primaire incrémentée par l'application où les données sont saisies. (pas d'INDENTITY)
J'aimerai générer cette clé par trigger mais j'ai bien l'impression que je vais devoir utiliser les curseurs :-/

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
CREATE TRIGGER TRG_TABLE_A_AUTOINCREMENT
ON TABLE_A
INSTEAD OF INSERT
AS
DECLARE @NEWID INT
BEGIN
SELECT @NEWID = (SELECT ISNULL(MAX(ID), 0)+1 FROM TABLE_A) 
 
INSERT INTO TABLE_A (ID, champ1, champ2)
SELECT @NEWID, champ1, champ2 FROM INSERTED
END
Je pense que je fais fausse route pour deux raisons, le trigger ne s'éxécutera qu'une seule fois même s'il est déclenché par un insert de plusieurs lignes.
Et secondo, l'insert déclenchant le trigger ne passe pas puisqu'il attend une donnée pour la clé primaire.

Si vous pouvez confirmer mes doutes...