dot*_*00b 3 t-sql sql-server triggers identity-column
我想INSERT
在表格X
中将该记录History
立即复制到另一个表格后.
现在该表将主键作为Identity
列,因此在实际插入之前,记录将不具有主键ID.
我的问题是,如果我trigger
在此记录上执行此操作,我将获得该记录的身份ID,还是仍然是空白的?
是的,触发器中可以使用标识,但请确保正确获取该标识.
@@ identity,SCOPE_IDENTITY等不是你想要在触发器中做的!
SELECT @id = id FROM inserted
Run Code Online (Sandbox Code Playgroud)
也是个坏主意.
始终编写触发器以期望同时进行多个更改.当您一次在表中插入多条记录时,上述方法都会导致细微但重要的错误.
正确的方法是从插入的表中插入审计表
即
INSERT INTO myAuditTable(Id, Datetime, user)
SELECT id, GETDATE(), USER_NAME())
FROM inserted
Run Code Online (Sandbox Code Playgroud)