触发器是否能够复制身份ID的主键?

dot*_*00b 3 t-sql sql-server triggers identity-column

我想INSERT在表格X中将该记录History立即复制到另一个表格后.

现在该表将主键作为Identity列,因此在实际插入之前,记录将不具有主键ID.

我的问题是,如果我trigger在此记录上执行此操作,我将获得该记录的身份ID,还是仍然是空白的?

Cod*_*ian 5

是的,触发器中可以使用标识,但请确保正确获取该标识.

@@ 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)