Je suis un étudiant qui fait un projet dans SQL Server 2005. J'essaie d'écrire une procédure pour générer et insérer une clé primaire pour un ID. J'ai pensé à un déclencheur avant insertion mais j'ai des erreurs. Quelqu'un peut-il m'aider? C'est ce que j'ai trouvé jusqu'à présent:Avant de déclencher pour SQL Server 2005
CREATE TRIGGER Create_ResourceID
ON Resource
before INSERT
AS
DECLARE @resourceid INT
SELECT @resourceid = (max(ResourceID) + 1) FROM Resource
GO
INSERT INTO Resource(ResourceID) VALUES (@resourceid);
Quelle erreur obtenez-vous? En passant, je pense que vous devez mettre en retrait la première ligne de votre code (en commençant 'CREATE TRIGGER' mais je ne peux pas éditer en retrait parce que StackOverflow me dit que je dois changer au moins 6 caractères, et que le retrait n'est que ! – nurdglaw
SQL Server n'a pas de déclencheurs 'BEFORE' Il n'existe tout simplement pas Vous devez utiliser un déclencheur' INSTEAD OF INSERT' à la place –
Pourquoi n'utiliseriez-vous pas un ['IDENTITY'] (http://msdn.microsoft.com/en-us/library/ms186775(v=sql.90).aspx) column: évite toutes les variations sur une condition de concurrence que vous semblez devoir rencontrer. et la valeur attribuée est disponible en utilisant ['SCOPE_IDENTITY()'] (http://msdn.microsoft.com/en-us/library/ms190315 (v = sql.90) .aspx) ou un ['OUTPUT'] (http://msdn.microsoft.com/en-us/library/ms177564(v=sql.90).aspx) clause. (_Do_ prendre le temps de se renseigner sur OUTPUT.) – HABO