Так что мне нужно немного помочь, мне нужно создать триггер, который позволяет избежать удаления последней строки значения
Допустим, у меня есть:
SubjectID | ModuleNr
1792 | 1
1792 | 2
1222 | 3
Я хочучтобы избежать удаления последней строки каждого SubjectID, поэтому в этом случае будет удалена только первая строка.
Я пробовал разные подходы (с использованием SQL Server 2012
), но я не могу использовать ForКаждый после моего FOR DELETE я также не могу выполнить BEFORE DELETE.
Каждый попытанный мной подход все равно позволял мне удалять строку.
Пожалуйста, имейте в виду, что это мой первый семестр в SQLЯ новичок в этом.
Вот моя попытка использовать счетчик, чтобы каким-то образом увидеть, есть ли только 1 значение:
CREATE TRIGGER curriculum.Keep_Last_Module
ON curriculum.Module
FOR DELETE
AS
BEGIN
DECLARE @count AS INT
SET @count = (SELECT COUNT(*) FROM curriculum.Module
WHERE SubjectID = (SELECT SubjectID FROM deleted) GROUP BY SubjectID)
IF (@count = 1)
BEGIN
RAISERROR('Last Module Cannot be Erased',16, 1)
END
END
Заранее спасибо