Triggers MS SQL Server 2012触发器语法

Triggers MS SQL Server 2012触发器语法,triggers,sql-server-2012,Triggers,Sql Server 2012,我正在进行硬件作业,学习触发器,在insert和delete DML ForTriggers的语法方面遇到以下问题: CREATE TRIGGER tr_PERSON_ForInsert ON PERSON FOR INSERT AS BEGIN DECLARE @SSN CHAR(9) SELECT @SSN = SSN FROM inserted DECLARE @NAME VARCHAR(50) SELECT @NAME = NAME FROM

我正在进行硬件作业,学习触发器,在insert和delete DML ForTriggers的语法方面遇到以下问题:

CREATE TRIGGER tr_PERSON_ForInsert
ON PERSON
FOR INSERT
AS
BEGIN

    DECLARE @SSN  CHAR(9)
    SELECT  @SSN  = SSN FROM  inserted
    DECLARE @NAME VARCHAR(50)
    SELECT  @NAME = NAME FROM inserted  
    DECLARE @USERNAME VARCHAR(50)
    SELECT  @USERNAME USERNAME FROM INSERTED
    declare @time time(7)
    select  @time = time from inserted

    insert into PERSON_DEL_LOG
    VALUES ('New person with SSN = ' +
    Cast(@SSN as NVARchar(9)) + 
    CAST(@NAME AS NVARCHAR(50)) +
    cast(@username as nvarchar(50)) +
    cast(@time as nvarchar(20))
    )
END

INSERT INTO PERSON('012675543', 'MIKE', '5467896543', 'MUSEUM', 'INTEL', 
'BLUECROSS', '987654321')

CREATE TRIGGER tr_PERSON_ForDELETE
ON PERSON
FOR DELETE
AS
BEGIN

    DECLARE @SSN  CHAR(9)
    SELECT  @SSN  = SSN FROM  DELETED
    DECLARE @NAME VARCHAR(50)
    SELECT  @NAME = NAME FROM DELETED       

    insert into PERSON_DEL_LOG
    VALUES ('New person with SSN = ' +
    Cast(@SSN as nvarchar(9)) +
    Cast(@NAME as VARCHAR(50)) + 'is added at ' + 
    cast(Getdate() as nvarchar(20))
    )
END

DELETE FROM PERSON WHERE NAME = 987654321

SELECT * FROM PERSON_DEL_LOG
我的
PERSON\u DEL\u LOG
表结构:

SSN, NAME, USERNAME, TIME

我需要知道我的问题到底在哪里

是的,那么你的问题在哪里?你有错误吗?您是否获得意外数据?您期望的是什么?给出错误详细信息。您的
INSERT
语句有错误(在触发器之外)。您还有一个概念性错误,即您的行为好像
插入的
删除的
仅包含一行,而实际上它们可能包含0、1或多行。您需要重新编写触发器,以便在基于集合的语句的
FROM
子句中使用
inserted
deleted