Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 触发器错误,来自if条件的错误_Sql Server 2005_Triggers - Fatal编程技术网

Sql server 2005 触发器错误,来自if条件的错误

Sql server 2005 触发器错误,来自if条件的错误,sql-server-2005,triggers,Sql Server 2005,Triggers,在我的应用程序中,应该使用Web界面输入数据。如果输入相同的节id,则应显示错误消息 我有一张会议桌,桌上没有价值。 这是我的扳机 Alter trigger fourone On MEETING INSTEAD OF Insert As IF(EXISTS( SELECT NULL FROM MEETING WHERE EXISTS ( SELECT

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

我有一张会议桌,桌上没有价值。 这是我的扳机

Alter trigger fourone 
On MEETING
INSTEAD OF Insert
As

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
触发器中没有错误。 然而,如果我输入任何值,它总是显示错误消息。 你们能给我个答案吗?
谢谢

它不应该代替,而是在插入触发器之后。而不是告诉sql server您将自己插入数据

你的情况也太复杂了:

IF EXISTS(SELECT NULL 
            FROM meetings inner join inserted 
              on inserted.SECTION_ID=MEETING.SECTION_ID
             and inserted.id <> meeting.id
          )

编辑:更正。在调用触发器时,行已经插入。您需要测试是否存在不包括插入的行的section_id。请参阅修订后的代码,并将ID替换为会议桌的主键。您应该在raiserror后添加rollback,否则新行将保留在会议中。

也许您不应该对可以由代理处理的作业使用触发器。定义这样的约束,然后在尝试插入后,捕获违反唯一约束的异常,并相应地通知用户。

谢谢您的回答。它仍然有相同的错误。如果存在,我会这样更改它。从会议中选择*2作为M内部连接插入作为I上的I.SECTION_ID=M.SECTION_ID开始打印“errrrr”结束