SELECT 'ALTER TABLE "'||nspname||'"."'||relname||'" DROP CONSTRAINT "'||conname||'";'
FROM pg_constraint
INNER JOIN pg_class ON conrelid=pg_class.oid
INNER JOIN pg_namespace ON pg_namespace.oid=pg_class.relnamespace
ORDER BY CASE WHEN contype='f' THEN 0 ELSE 1 END,contype,nspname,relname,conname
您可以执行以下步骤来避免截断期间的外键错误
创建删除所有外键和约束的自动脚本(不要运行它)
创建重新创建所有外键和约束的自动脚本
运行drop脚本
运行normal TRUNCATE your_table
运行“重新创建密钥”脚本
通过这些步骤,TRUNCATE命令运行良好,因为没有外键。在
删除和重新创建脚本来自https://blog.hagander.net/automatically-dropping-and-creating-constraints-131/
删除脚本:
重新创建脚本:
^{pr2}$从一个表中删除所有数据
TRUNCATE TABLE
语句的最简单形式如下:从具有外键引用的表中删除所有数据
要从主表和所有对主表有外键引用的表中删除数据,请使用
^{pr2}$CASCADE
选项,如下所示:更新:
相关问题 更多 >
编程相关推荐