J'ai un au lieu de triggersur. J'ai une valeur dans une variable.
Je voudrais insert la valeur dans une des colonnes et utiliser les champs d'insérés. C'est ce que j'essaie d'accomplir:
declare @someLocalVariable varchar(9) set @someLocalVariable = dbo.someLocalUDF() INSERT myTable (field1, field2, field3) VALUES (@someLocalVariable, (select field2, field3 from inserted))
INSERT INTO myTable ( field1, field2, field3 ) SELECT @someLocalVariable, field2, field3 FROM INSERTED
Souvenez-vous simplement que si cela a été déclenché par une insertion par lots (c'est-à-dire que INSERTED a plus d'un logging), tous les loggings seront également insérés dans la table cible.
(Ce qui est exactement ce qu'il devrait faire à mon humble avis, mais pour une raison quelconque les gens oublient généralement à ce sujet.)
modifier
Le PO a oublié de dire quelle était vraiment sa question: générer des valeurs keys uniques. Donc, dans ce cas, une façon de procéder serait quelque chose comme ceci:
CREATE TRIGGER dbo.InsteadOfInsertMyTable ON MyTable INSTEAD OF INSERT AS BEGIN INSERT INTO myTable ( primaryKeyField, field2, field3 ) SELECT dbo.someUniqueValueGeneratorUDF(), field2, field3 FROM INSERTED END GO