|
1
65
根据之前的评论,这应该是个问题。也就是说,有一个命令可能就是您想要的—它将约束设置为deferred,以便在提交时检查它们,而不是在每次删除时检查它们。如果你只是对所有的行进行一次大的删除,这不会有什么区别,但是如果你是分块进行的,它会有区别。
这就是你要找的。请注意,约束必须标记为
|
|
|
2
25
对我起作用的是一个接一个地禁用
解决方案在版本9.3.16中工作。我的时间从45分钟到14秒
如@amphetamachine在评论部分所述,您需要
|
|
|
3
10
如果你尝试
如果此操作成功,将禁用表约束下的所有触发器。现在由您来确保您的更改使DB保持一致的状态! 完成后,重新启用触发器;您的会话限制:
|
|
|
4
5
(这个答案假设您的目的是删除这些表的所有行,而不仅仅是一个选择。) 我也必须这样做,但作为测试套件的一部分。我找到了答案,他建议道 elsewhere on SO . 使用 TRUNCATE TABLE 具体如下:
下面的命令将从表中快速删除所有行
但是,您可以限定查询,以便它也会截断所有引用所列表的表(尽管我没有尝试此操作):
默认情况下,这些表的序列不会重新开始编号。新行将以序列的下一个编号继续。重新开始序列编号:
|
|
|
5
3
我的PostgreSQL是9.6.8。
为我工作,但我需要许可。
然后连接到我的数据库
并运行:
现在我可以用约束从表中删除。 |
|
|
6
-11
禁用所有表约束
--启用所有表约束
|
|
|
Johnny T · 基于当前值的SQL合并表[重复] 1 年前 |
|
|
Peter Schofield · 类型转换Postgresql 1 年前 |
|
|
Kevin Smeeks · Pyspark JDBC分区读取 1 年前 |
|
|
Andrus · 如何在sql中查找第二个匹配项 1 年前 |