Sql server 2005 触发器错误,来自if条件的错误
在我的应用程序中,应该使用Web界面输入数据。如果输入相同的节id,则应显示错误消息 我有一张会议桌,桌上没有价值。 这是我的扳机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
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”结束