我最近换了工作,在这家新公司我们正在使用MySQL。我没有任何关于MySQL的经验,尽管我已经使用SQL Server和Oracle超过4年了。 现在我用MySQL看到的奇怪的事情是它似乎没有考虑一些基本的东西,如外键约束(意思是一个列是一个外键,但我可以在这里插入任何值,无论它是否存在于另一个表中这个FK相关)。现在我知道在SQL Server中存在NOCHECK foriegn键约束的这个概念,但负责MySQL db的新公司的人说,不尊重FK在MySQL中是正常的,它不需要任何特殊设置(如NOCHECK FK约束)。
我无法理解,在数据库系统中,如何在不进行这些基本检查的情况下确保参考整合。我不确定本地mySQL“专家”是否知道这一点,或者只是mySQL确实不尊重FK规则。有什么想法吗?
答案 0 :(得分:3)
检查您的表是否正在使用InnoDB引擎。使用MyISAM引擎时(直到最近才是默认设置),不会强制执行外键声明。
答案 1 :(得分:2)
MySQL有不同的数据库引擎 -
在两个引擎上你都可以创建表并尝试创建FK,但MyISAM会忽略它。
答案 2 :(得分:0)
此外,确保强制执行外键。出于某种原因,他们不在我的身上,导致一周的头痛!
检查:强>
SELECT @@FOREIGN_KEY_CHECKS
设置:强>
SET FOREIGN_KEY_CHECKS=1