mysql - 较旧的 SQL 服务器和通过外键的引用完整性

标签 mysql database referential-integrity

我试图了解引用完整性,即实体和关系表之间外键的使用。

关系模式由 3 个表组成:

  • 供应商(S),
  • 零件 (P) 和
  • 每个人购买的数量 (SP)。

每个中的主键是 S 中的 SNum、P 中的 PNum 以及 SP 中 SNum 和 PNum 的复合主键和外键,引用各自的表。

如果我对参照完整性的理解是正确的,如果我要在 SP 表中输入一个非法条目(S 或 P 的主键中不存在的条目),例如“S7”,他们不应该这样做吗?是因为S表中没有“S7”而发生错误吗?是否因为服务器类型可能已过时并且无法保持完整性或者我理解不正确?

最佳答案

MyISAM存储引擎不支持外键约束。它们将被解析,然后被忽略。

参见https://dev.mysql.com/doc/refman/5.7/en/myisam-storage-engine.html

您可以运行show create table tablename来查看您正在使用哪个存储引擎。您几乎肯定应该使用 InnoDB engine .

关于mysql - 较旧的 SQL 服务器和通过外键的引用完整性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49863769/

相关文章:

mysql - 我想使用选择查询插入表; select查询有一个自增字段和多条记录

Mysql 8远程访问

mysql - 我可以在触发器(mySQL)中使用嵌套的 BEGIN/END block 吗

database - 如何防止 Datalog 规则修剪空值?

sql - PostgreSQL:删除从另一个表引用的行

MySQL 约束使用固定 "hard-coded"值 - 这可能吗?

PHP PDO 更新 : SQLSTATE[HY093]: Invalid parameter number: parameter was not defined

php - 如何对 sql 表中的不同值执行摘要

c# - 如何实现 Singleton,它在 C# 中从 db 填充其值?

mysql - 在 MySQL 中,如何从单个表加载多个表,同时保持引用完整性?