一、前言
对于【是否使用外键约束】这个话题已经是老生常谈的了。在学校中,老师交给我们的大多是需要我们建立外键约束,但进入了实际工作很多时候并不会使用外键,而是通过代码逻辑来控制。包括在阿里的JAVA规范中也明确规定:【强制】不得使用外键与级联,一切外键概念必须在应用层解决。
为什么要做这样的规定呢?到底该不该使用外键约束呢?我们可以举一个例子来说明
二、举例说明
现在我们在数据库中建立了两张表:【product和project】,【project】的porduct
字段,关联Product
,他们之间存在下图这样的一条外键记录:
当我们对【project】表增加一条project_id
为 1 的记录的时候,由于【product】表不存在相应的记录会导致报错:
可以看出,这个约束的存在,会保证表间数据的