【问题标题】:PHP SQL Check Referential Integrity for whole DBPHP SQL检查整个数据库的参照完整性
【发布时间】:2015-01-08 12:27:59
【问题描述】:

我想知道是否有一个选项可以在不手动检查所有内容的情况下检查我的数据库的引用完整性。我必须提到,我对 SQL 完全陌生,并且有任务检查引用完整性。

通过搜索,我发现了这个问题: how to find records that violate referential integrity

这已经很有帮助了,但是我有很多表格,我想知道是否有比以我找到的问题的格式编写数百个查询更快的方法。

感谢您的帮助, 余

编辑: 我知道大多数数据库会自动检查,但我是学生,任务说 “这些脚本应该说明数据库的更新和引用完整性。 !请明确指出检查参照完整性的位置(添加行、修改行、删除行)。 "

所以我想我必须手动检查它。

【问题讨论】:

  • 当您尝试插入数据时,这些检查由 MySQL 自动完成(+ 当您没有手动禁用检查时,+ 当您之前向结构添加引用完整性时)。

标签: mysql foreign-keys referential-integrity generic-foreign-key


【解决方案1】:

大多数数据库检查引用,例如 MySQL。所以看看FOREIGN KEYREFERENCES 命令

http://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html

来自 MySQL 页面的示例

CREATE TABLE parent (
    id INT NOT NULL,
    PRIMARY KEY (id)
) ENGINE=INNODB;

CREATE TABLE child (
    id INT, 
    parent_id INT,
    INDEX par_ind (parent_id),
    FOREIGN KEY (parent_id) 
        REFERENCES parent(id)
        ON DELETE CASCADE
) ENGINE=INNODB;

子自动检查并需要父行。如果删除父级,所有子行都将删除到 (ON DELETE CASCADE)。

【讨论】:

  • 感谢您的回答。不幸的是,我想出于练习的原因,我必须手动进行(请参阅已编辑的问题)。如果能再看一遍就好了。
  • 使用 ALTER TABLE 您可以添加表约束。
  • @Yíu 永远不要手动操作。它不打算手工完成。这根本不安全。您需要的是零件:FOREIGN KEY (...) REFERENCES (...) ON DELETE ...ON UPDATE... 请参阅链接文档。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多