时间:2021-05-24
t_aj_ajjbxx
t_aj_ajfbxx
t_xt_dwxx
只有t_aj_ajfbxx 表中数据被删除
只有t_aj_ajjbxx 表中数据被删除
补充:PostgreSQL的级联删除(主键删除则外键数据记录同时删除)
最近的一个项目中,所涉及的数据库表之间有设置级联关系,即表legal_positionsinfo中的id是表legal_approval的外键。
现在有一个功能是根据id删除表legal_positionsinfo中的一条记录。
但是在程序调试删除时,报错如下:
update or delete on table "legal_positionsinfo" violates foreign key constraint "legal_approval_position_id_fkey" on table "legal_approval" DETAIL: Key (id)=(1) is still referenced from table "legal_approval".主要是因为两表之间存在级联关系,主键记录删除则外键记录也应该同时删除。
这里使用的是强大的数据库管理和设计工具Navicat,需要在数据库中设置级联删除,即将NO ACTION 改为 CASCADE即可:
那外键设置中的CASCADE、NO ACTION、RESTRICT、SET NULL都代表着什么意思呢?区别是什么呢?
CASCADE:父表delete、update的时候,子表会delete、update掉关联记录;
SET NULL:父表delete、update的时候,子表会将关联记录的外键字段所在列设为null,所以注意在设计子表时外键不能设为not null;
RESTRICT:如果想要删除父表的记录时,而在子表中有关联该父表的记录,则不允许删除父表中的记录;
NO ACTION:同 RESTRICT,也是首先先检查外键;
SET DEFAULT:父表有变更时,子表将外键列设置成一个默认的值 但Innodb不能识别。
1)父表更新时子表也更新,父表删除时如果子表有匹配的项,删除失败;
2)父表更新时子表也更新,父表删除时子表匹配的项也删除。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
最近用PostgresSql数据库进行多表关联删除的操作,在写sql语句的时候遇到了问题:DELETEs.*FROMstudents,classroomcWHE
本文实例讲述了MongoDB多表关联查询操作。分享给大家供大家参考,具体如下:Mongoose的多表关联查询首先,我们回忆一下,MySQL多表关联查询的语句:s
前言hasOne、hasMany是Yii2特有的用于多表关联查询的函数,平时在使用多表关联查询的时候建议使用它们。为什么?因为这种方式关联查询出来的结果会保留Y
当models中使用ManyToManyField进行多表关联的时候,需要使用字段的add()方法来增加关联关系的一条记录,让两个实例关联起来才能顺利保存关联关
本文实例讲述了mysql实现多表关联统计的方法。分享给大家供大家参考,具体如下:需求:统计每本书打赏金额,不同时间的充值数据统计,消费统计,设计四个表,book