本文主要是介绍SQL触发器和外键连用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
起因:为防止数据冗余,我建立了两个表,一个用户表user(表里面只存放了id(主键)、用户名、密码)和用户信息表usr_Info(表中有手机号、邮箱、姓名、家庭地址等字段)。
问题来了:我的想法是每向user里新增加一条数据,相应的usrInfo也会增加一条数据,作为user表的扩展字段。
第一步:我在usr_Info表中添加了外键,目的是当主表user数据发生变化时(如删除数据),usr_Info表中相应的数据也会被删除。
第二步:也是我产生的问题,当主表删除数据时,外键会有变化,但是当主表插入数据时,外键不会有任何相应的操作,自然也就无法做主表的扩展表。所以我使用了触发器,当主表插入数据时,主表会产生一个新的id,然后通过触发器向usr_Info插入相应的id,这样主表id就和外键id是一致的,之后就可以通过关联查询使usr_Info表作为user的扩展表了。
解决方案:
1、首先建立两张表:
1)user表:
2)usr_Info表:
2、为user表建立触发器
AFTER:执行语句在insert操作之后执行
insert into usr_Info(usr_id) values(new.id):触发器触发的语句
new.id:当user表插入数据时,由于id是主键且自增长,所以id会变化,new.id即为新增字段的id
3、为usr_Info表建立外键
CASCADE:当主表发生变化时,外键会发生相应的变化
4、插入效果:
主表:
从表:
5、删除效果:
主表:
从表:
6、最后通过user.id=usr_Info进行关联查询
关联查询结果:
参考:https://www.cnblogs.com/zhangzhongxian/p/7070277.html
这篇关于SQL触发器和外键连用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!