-1
我想制定一個觸發器,將放置在市場列表表格上,該表格將插入記錄到子表格中,如果該人員的年齡小於18,則嘗試插入。子表和營銷列表表具有相同的字段。我到目前爲止已經開始。我該如何繼續?如何創建插入觸發器?
create table child_list
(
Id int primary key,
Name varchar(20) ,
Date_of_Birth date ,
Gender char(1) ,
Parish varchar(20) ,
Mobile integer ,
Mobile_Provider varchar(7) ,
age integer,
age_cat varchar(20)
);
create trigger insert_child
on marketing_list
for insert
as
if age<18....
你的觸發器有** **主要在缺陷您似乎認爲它會被稱爲**每行一次** - 這是**不是**的情況。觸發器將在每個語句**中觸發一次**,因此如果您的INSERT語句影響25行,您將觸發**一次**,但是「插入」將包含25行。您的代碼在這25行中選擇哪一個? 'SET @AGE =(SELECT age FROM INSERTED)' - 這是非確定性的,你會得到*一個*任意的行,而**忽略**所有其他的。你需要重寫你的觸發器來考慮這個問題! –
如果您的INSERT語句影響25行,則觸發器執行25次。由於插入是逐行操作。 – Immu
*** NO!***如果您有一條插入25行的「INSERT」語句,則觸發器將僅觸發*** ONCE *** - 它不是***行 - 逐行! –