触发器插入单独的表中

时间:2015-03-23 13:16:04

标签: mysql phpmyadmin

快速了解触发器问题。

我有两张桌子。即人和属性。

人们有以下结构:

| 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。

期待听到一些回应 干杯

1 个答案:

答案 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 ;

如果条件部分始终是一对一关系,则可以跳过条件部分。