-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 *** - 它不是***行 - 逐行! –