PHP SQL检查整个数据库的参照完整性

时间:2015-01-08 12:27:59

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

我想知道是否有一个选项可以检查数据库的引用完整性而无需手动检查所有内容。我必须提一下,我对SQL完全不熟悉,并且有责任检查参照完整性。

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

这已经很有帮助,但是我有很多表格,我想知道是否有更快的方式,而不是以我发现的问题的格式写出数百个查询。

感谢您的帮助, 耀

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

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

1 个答案:

答案 0 :(得分: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)。