MySQL truncate有外键约束的表

主外键是数据库提供的一种两表之间强制关联的方法,也可以从应用层实现。

我认为需要根据实际情况进行取舍,例如表不复杂,可以由应用实现,若表之间关联较多且复杂,那么交由数据库处理,至少保证不会错。
存在主外键关联的主表,由于存在外键关联关系,因此有些操作就会禁止,例如truncate。
SET FOREIGN_KEY_CHECKS=0;            #取消外键约束
TRUNCATE TABLE  table_name;            
SET FOREIGN_KEY_CHECKS=1;            #设置外键约束:

总结:

1. 主外键是数据库提供的强约束,可以帮助我们控制主子表之间的关系,但同时还是一把双刃剑,当然,我们认为既然定义了主外键,就是需要这种强制关系,但有时可能就会有一些变更,因此,如何取舍,需要根据实际情况来决策。

2. 主外键关联中的主表,如果有数据,则不能直接用truncate方式删除,因为会认为有外键和其关联,不能直接截断主表,若需要做,可以先禁止外键约束,主表变成一个独立的表,这样就可以执行truncate了。

posted @ 2019-05-20 09:55  P_PlusUltra  阅读(1103)  评论(1编辑  收藏  举报