在触发器中使用inserted和deleted表

ann*_*nna 2 t-sql sql-server triggers

我想编写触发器来处理inserted和deleted表.我写了插入的触发器:

CREATE TRIGGER FILL_TABLE
ON Person FOR INSERT
AS
DECLARE @ID int
SELECT @ID = p.ID
FROM Person AS p 
    INNER JOIN inserted AS i ON p.ID = i.ID 
DECLARE @uName char(30);
SELECT @uName = SYSTEM_USER
INSERT tblOperationLog 
 Values 
 ( @uName, 'user has inserted a row with ID = ' + CONVERT(nvarchar, @ID) + '', 
    'Insert', CURRENT_TIMESTAMP, GETDATE() )
Run Code Online (Sandbox Code Playgroud)

我想编写触发器并使用已删除的表,就像插入的一样.但我不知道怎么做.我想检索已删除行的ID以填充tblOperationLog的第二列,但我不能.我也应该使用内连接吗?

cjk*_*cjk 12

只有插入一行时,您的触发器才有效.作为inserted表提供,您可以从该表插入并使用所有记录.我想你正在寻找这样的东西:

CREATE TRIGGER FILL_TABLE 
ON Person FOR INSERT, DELETE
AS 

  INSERT tblOperationLog  
  SELECT  SYSTEM_USER,'user has inserted a row with ID = ' + ID, 'Insert', 
    CURRENT_TIMESTAMP, getdate()
  FROM inserted

  INSERT tblOperationLog  
  SELECT  SYSTEM_USER,'user has deleted a row with ID = ' + ID, 'Delete', 
    CURRENT_TIMESTAMP, getdate()
  FROM deleted
Run Code Online (Sandbox Code Playgroud)