SQL Server错误消息

时间:2018-04-15 02:20:38

标签: sql-server triggers

这是我的触发器:

CREATE TRIGGER trgEmployee 
ON EmployeeAudit
FOR INSERT
AS
    DECLARE @empNumber CHAR(8)
    DECLARE @SSN CHAR(9)
    DECLARE @firstName VARCHAR(25)
    DECLARE @lastName VARCHAR(25)
    DECLARE @address VARCHAR(50)
    DECLARE @state CHAR(2
    DECLARE @zip CHAR(5)
    DECLARE @job VARCHAR(50)

    INSERT INTO EmployeeAudit 
    VALUES (@empNumber, @SSN, @firstName, @lastName, @address, @state, @zip, @job)
GO

当我尝试执行它时,我收到此错误:

  

Msg 137,Level 15,State 2,Line 189
  必须声明标量变量" @ empNumber"

1 个答案:

答案 0 :(得分:2)

您触发实施有问题。您应该从Inserted表中读取变量而不是读取变量。

以下是现有问题。

变量声明问题。

declare @state Char(2

上述声明应正确关闭。将其更改为

declare @state Char(2)

您还应该在使用insert时指定列。

INSERT INTO [TABLE_NAME](COL1,COL2,COL3... COLN)
VALUES(@V1,@V2,@V3...@VN)

理想情况下,您的触发器应如下所示。

INSERT INTO employeeaudit 
            (empnumber, 
             ssn, 
             firstname, 
             lastname, 
             address, 
             state, 
             zip, 
             job) 
SELECT I.empnumber, 
       I.ssn, 
       I.firstname, 
       I.lastname, 
       I.address, 
       I.state, 
       I.zip, 
       I.job 
FROM   inserted I