带循环的Transact-SQL触发器

时间:2018-10-25 21:14:07

标签: sql-server tsql database-trigger

我有一个问题要坚持几个小时。我有3个表,并且我要在表Project上触发一个触发器,以检查是否有人将Leiternr更新为null,只有在Projekt表的Pronr中没有Table MiPro的Mitnr时才能完成

enter image description here

到目前为止,我的情况是这样。但是,当Leitnr大于1为null时,它将不再起作用。从逻辑上讲,这是“ where pro nr =(从projekt3中选择pronr,其中leiternr为null))> 0“

但是我如何实现我想要的?

create trigger Leiternr on projekt3 after update
as 
begin
if (select count(*) from mipro3 where pronr = (select pronr from projekt3 where leiternr is null)) > 0
begin
    RAISERROR ('Projekt has still Member', 16, 1);
    ROLLBACK TRANSACTION;
    RETURN 
end

结束

1 个答案:

答案 0 :(得分:0)

看来您真的很亲密。我认为您只需要将“ =”更改为“ in”即可。这样,您可以比较多个记录。像这样:

create trigger Leiternr on projekt3 after update
as 
begin
if (select count(*) from mipro3 where pronr in (select pronr from projekt3 where leiternr is null)) > 0
begin
    RAISERROR ('Projekt has still Member', 16, 1);
    ROLLBACK TRANSACTION;
    RETURN 
end