SQL HELP INSERT语句包含的项目多于插入列表

时间:2015-10-06 05:49:39

标签: sql sql-server

我试图在桌面上写一个触发器而我无法通过以下关于匹配计数列表的错误来完成这项工作。我数了很多次,无法解决问题!

Create Trigger trg_LowSupplyNotify
On Item
After Insert ,Delete 

As 
Begin


if exists(select 1 from inserted)
Begin
    Insert Into LowSupplyNotify
    (
    [itemNum],
    [NumberLeft],
    [ManagerMail]
    )
    Select itemNum ,
    NumberLeft,
    ManagerMail, 
    'INSERT' ,SYSTEM_USER
    from inserted
END

if exists (select 1 from deleted)
Begin
    Insert Into LowSupplyNotify  
    (
        itemNum ,
        NumberLeft ,
        ManagerMail
    )
        Select itemNum ,
        NumberLeft ,
        ManagerMail, 
        'INSERT' ,SYSTEM_USER
        from deleted
End
End
Go

错误:

  

Msg 121,Level 15,State 1,Procedure trg_LowSupplyNotify,Line 10 The   INSERT语句的选择列表包含的项目多于   插入列表。 SELECT值的数量必须与数量匹配   INSERT列。消息121,级别15,状态1,程序   trg_LowSupplyNotify,第25行INSERT语句的选择列表   包含的项目多于插入列表。 SELECT值的数量   必须匹配INSERT列的数量。

1 个答案:

答案 0 :(得分:6)

错误告诉所有,你的select语句有5个值,插入有3列定义。

'INSERT' ,SYSTEM_USER没有在insert语句中定义相应的列。

您要么添加两列(如果已在表LowSupplyNotify中定义并存在),否则您需要从select语句中删除这两个值('INSERT' ,SYSTEM_USER)以消除此错误