快速了解触发器问题。
我有两张桌子。即人和属性。
人们有以下结构:
| id | firstname | surname | DOB | Age
属性具有以下结构:
| id | person_id | haircolor | eyecolor | weight | height
我有以下触发器:
Insert Into attributes (person_id)
SELECT id
FROM INSERTED
当记录被插入到人员表中时,记录会被插入到属性表中的person_id列中,其中person_id与person表的id相同。插入行的其余部分默认为空。
现在当两个表都为空并且我创建第一个记录时,一切都按预期进行。但是当我创建第二条记录时,会将两条记录插入到属性表中。
我需要它,以便当我在people表中插入一行时,只有一个相应的行被插入到属性表中。
我在撰写本文时使用的是最新版本的phpmyadmin。
期待听到一些回应 干杯
答案 0 :(得分:1)
您可以执行以下操作 -
delimiter //
create trigger People_ins after insert on People
for each row
begin
declare pcount int;
select count(*) into pcount from attributes where person_id = new.id;
if pcount = 0 then
insert into attributes
(person_id) values (new.id);
end if;
end ;//
delimiter ;
如果条件部分始终是一对一关系,则可以跳过条件部分。