擅长:python、mysql、java
<p>您可以执行以下步骤来避免截断期间的外键错误</p>
<ol>
<li><p>创建删除所有外键和约束的自动脚本(不要运行它)</p></li>
<li><p>创建重新创建所有外键和约束的自动脚本</p></li>
<li><p>运行drop脚本</p></li>
<li><p>运行normal TRUNCATE your_table</p></li>
<li><p>运行“重新创建密钥”脚本</p></li>
</ol>
<p>通过这些步骤,TRUNCATE命令运行良好,因为没有外键。在</p>
<p>删除和重新创建脚本来自<a href="https://blog.hagander.net/automatically-dropping-and-creating-constraints-131/" rel="nofollow noreferrer">https://blog.hagander.net/automatically-dropping-and-creating-constraints-131/</a></p>
<p>删除脚本:</p>
<pre><code>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
</code></pre>
<p>重新创建脚本:</p>
^{pr2}$