Transact-SQL Trigger с циклом - PullRequest
       13

Transact-SQL Trigger с циклом

0 голосов
/ 26 октября 2018

У меня есть вопрос, который я застрял на пару часов.У меня есть 3 таблицы, и я хочу триггер для таблицы Project, который проверяет, обновляет ли кто-нибудь Leiternr значение null, это можно сделать только тогда, когда в таблице Pronr of Projekt нет Mitnr из таблицы MiPro

enter image description here

То, что я имею до сих пор это.Но это больше не работает, когда больше 1 Leitnr равно нулю.Что логически является причиной "где pro nr = (выберите значение prr из projekt3, где leiternr равно нулю))> 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

end

1 Ответ

0 голосов
/ 26 октября 2018

Похоже, ты действительно близко.Я думаю, вам просто нужно изменить "=" на "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
...