我的数据库中有两个表。
人
详情
which holds detail information about the person
我的问题是如何在从Person表中删除某人以及从详细信息中删除他/她的详细信息时,如何在两者和触发器之间建立关系? 感谢
答案 0 :(得分:0)
我想也许你不需要2张桌子。为什么将人员细节存储在单独的表中你可以使用同一个表Person。这更有意义。 如果你真的需要这样做,你只需要添加一个列" personId"在你的人身上作为外键的细节。 因此,要获取一个人的所有数据,您只需加入2个表:
Select * from Person p join PersonDetails pd on p.personId = pd.personId
触发器取决于您使用的数据库。如果您使用的是SQL Server,请参阅以下链接: http://msdn.microsoft.com/fr-fr/library/ms189799.aspx
对于mysql,请参考: http://dev.mysql.com/doc/refman/5.5/en/trigger-syntax.html
答案 1 :(得分:0)
通过使用ON DELETE CASCADE
设置外键约束,可以采用两种方法
现在查看模式,我没有看到您将人员ID存储在详细信息表中。
您可能需要在person_id
表格中添加Details
列,并将id
表格中的Person
存储到此表格中。
http://dev.mysql.com/doc/refman/5.6/en/innodb-foreign-key-constraints.html
http://www.mysqltutorial.org/mysql-on-delete-cascade/
以下是 DEMO 如何使用删除级联创建外键约束
或者你可以编写一个触发器来处理它
delimiter //
create trigger delete_person after delete on Person
for each row
begin
delete from Details where person_id = old.id ;
end; //
delimiter ;