无法绑定多部分标识符“inserted.SECTION_ID”

时间:2012-03-14 08:49:50

标签: sql-server-2005 triggers

在我的应用程序中,应使用Web界面输入数据。如果我输入相同的节ID,则应显示错误消息。

我有SECTION_ID的MEETING表 当我尝试触发时,我收到了错误

    Msg 4104, Level 16, State 1, Procedure fourone, Line 7
    The multi-part identifier "inserted.SECTION_ID" could not be bound.

    Create trigger fourone
    On MEETING
    for Insert
    As

    IF( exists (select * from MEETING WHERE MEETING.SECTION_ID = inserted.SECTION_ID )) 
    BEGIN   
        raiserror('ERRORRRRRRRR',15,1);
    END

我错过了什么? 你能给我一些建议吗?

2 个答案:

答案 0 :(得分:1)

您需要在JOIN中引用插入的表格,如下所示:

IF( exists (select * from MEETING 
               JOIN inserted ON MEETING.SECTION_ID = inserted.SECTION_ID )) 
BEGIN
    raiserror('ERRORRRRRRRR',15,1);
END

答案 1 :(得分:0)

if语句应该是这样的:

IF(EXISTS(
        SELECT 
          NULL 
        FROM 
          MEETING 
        WHERE EXISTS
          (
             SELECT 
               NULL 
             FROM 
               inserted 
             WHERE 
               inserted.SECTION_ID=MEETING.SECTION_ID
          )
    )
BEGIN
  raiserror('ERRORRRRRRRR',15,1);
END

在msdn上它说:

  

DML触发器使用已删除和插入的逻辑(概念)表。   它们在结构上类似于触发器所在的表   已定义,即尝试用户操作的表。该   删除和插入的表保存旧值或新值   可以由用户操作更改的行。例如,要检索   删除表中的所有值,使用

参见参考here