Trigger
為什麼 INSERT AFTER Trigger 不添加所有結果?
我正在為 db-class.org 做練習,我們必須在其中編寫一個觸發器,讓被命名為“Friendly”的新學生自動像同年級的其他人一樣。也就是說,在觸發器執行之後,我們應該在 Likes 表中為每個與“Friendly”同年級的高中生 A 提供 (‘Friendly’, A)。
這是在以下數據集的 sqlite 中完成的。現在我的觸發器起作用了,但它只添加了一個“友好”喜歡的人,而不是所有的人(那些具有相同等級的人)。
這是我的觸發器:
CREATE Trigger Q1 After Insert on Highschooler For Each Row When New.Name = 'Friendly' Begin INSERT Into Likes Values (New.ID, ( SELECT Highschooler.ID FROM Highschooler WHERE Highschooler.Grade = New.Grade)); End;
我懷疑我的 INSERT 查詢有問題,因為 SELECT 單獨返回所有 ID。那麼如何確保它插入所有具有匹配成績的 ID?
在大多數平台上
insert
,如果您的子選擇返回多於一行,而不是僅插入返回的“第一”行(並且“第一”在沒有order by
子句的情況下未定義),您將拋出錯誤。你可能追求的是
insert
這樣的:INSERT Into Likes SELECT New.ID, ID FROM Highschooler WHERE Grade = New.Grade and ID<>New.ID;