脚本所有外键约束-结果集可用于将约束复制到测试数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了脚本所有外键约束-结果集可用于将约束复制到测试数据库相关的知识,希望对你有一定的参考价值。

  1. /*** Script all Foreign Key Constraints ***/
  2. /*** The Result Set can be used to copy constraints to your testing DB or to keep on hand in case of errors. ***/
  3. SELECT
  4. 'ALTER TABLE '+FK.TABLE_NAME+
  5. ' ADD CONSTRAINT '+C.CONSTRAINT_NAME+' FOREIGN KEY'+
  6. '('+CU.COLUMN_NAME+') '+
  7. 'REFERENCES '+PK.TABLE_NAME+
  8. '('+PT.COLUMN_NAME+')' ForeignKeyScripts
  9. FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C
  10. INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK ON C.CONSTRAINT_NAME = FK.CONSTRAINT_NAME
  11. INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK ON C.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME
  12. INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU ON C.CONSTRAINT_NAME = CU.CONSTRAINT_NAME
  13. INNER JOIN (
  14. SELECT i1.TABLE_NAME, i2.COLUMN_NAME
  15. FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS i1
  16. INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE i2 ON i1.CONSTRAINT_NAME = i2.CONSTRAINT_NAME
  17. WHERE i1.CONSTRAINT_TYPE = 'PRIMARY KEY'
  18. ) PT ON PT.TABLE_NAME = PK.TABLE_NAME

以上是关于脚本所有外键约束-结果集可用于将约束复制到测试数据库的主要内容,如果未能解决你的问题,请参考以下文章

在 PHPUnit/DBUnit 中设置外键约束

由于外键约束,使用 phpMyAdmin 复制数据库失败

sql 创建用于查找外键约束的脚本,并通过删除和创建外部约束来重建它们。

SQLSTATE [23000]:完整性约束违规:1452 无法添加或更新子行:外键约束失败

是否应该通过 DISABLE TRIGGER ALL 禁用外键约束检查?

转:使用DBUnit测试时违反外键约束的解决办法