dav*_*ley 11 postgresql truncate cascade
运行时:
TRUNCATE TABLE YYYYY RESTART IDENTITY
Run Code Online (Sandbox Code Playgroud)
我看到此错误消息:
ERROR: cannot truncate a table referenced in a foreign key constraint
DETAIL: Table "XXXXX" references "YYYYY".
HINT: Truncate table "XXXXX" at the same time, or use TRUNCATE ... CASCADE.
Run Code Online (Sandbox Code Playgroud)
中的两个建议HINT
:
使用TRUNCATE ... CASCADE
是有意义的,并且有效,但不太明确,因为必须检查YYYYY
以查看级联的去向。这让我想尝试另一种选择:
Truncate table "XXXXX" at the same time
,但我的问题是:
截断表是什么意思at the same time
?
我尝试添加 a TRUNCATE XXXXX...
(并将它们都包装在BEGIN
/ 中COMMIT
),但这会产生相同的错误。
ype*_*eᵀᴹ 13
- 同时截断一个表是什么意思?
这意味着与相同的声明。您可以截断多个表:
TRUNCATE xxxxx, yyyyy RESTART IDENTITY ;
Run Code Online (Sandbox Code Playgroud)
Postgres 文档中的更多详细信息:TRUNCATE
。
1) 级联截断可能很危险。如果您有一个查找表(在本例中,我相信 XXXX),请与它吻别,因为它将被截断,您将丢失所有数据。
例如,您有一个客户表 (YYYY),其 FK 为订单 (XXXX)。当您使用级联截断截断 YYYY 时,它会截断 YYYY。如果没有,它将显示您看到的截断错误。
2)同时截断表“XXXX”意味着它建议您也截断您的查找/引用表。