我理解觸發器的想法,但對如何使用它來施加約束有點困惑。例如,我有兩個表格:一個student
表格和一個book_order
表格,顯示學生訂購的書籍。使用SQL Server觸發器施加約束
我想創建一個觸發器,它將檢查具有圖書訂單的學生無法從學生表中刪除。
我理解觸發器的想法,但對如何使用它來施加約束有點困惑。例如,我有兩個表格:一個student
表格和一個book_order
表格,顯示學生訂購的書籍。使用SQL Server觸發器施加約束
我想創建一個觸發器,它將檢查具有圖書訂單的學生無法從學生表中刪除。
不知道爲什麼你會永遠這樣做,除非你想寫日誌或什麼時候發生的,但是.....
create TRIGGER Del_Student
ON dbo.Student
INSTEAD OF DELETE
AS
BEGIN
Declare @cnt int
Select @cnt = count(*) from deleted d
Inner Join BookOrders o on d.studentId = o.studentId
if (@cnt > 0)
BEGIN
RAISERROR ('Deletions not allowed from this table when bookorders exist for student)', 16, 1)
END
END
作爲替代,你應該使用外鍵約束'book_order'表,引用'student'表,因爲我不認爲你需要觸發這個場景。 –
問題是爲什麼使用觸發器而不是外鍵? –
外鍵約束不僅僅是一個「替代」。這是表達這種情況的正確方法。你不應該爲此使用觸發器。你不應該學習爲此使用觸發器。 –