繁体   English   中英

删除更新表的约束 - 当前事务被中止

[英]Dropping constraints to update tables - Current transaction is aborted

上下文:我想更新一个名为“项目”的表,并将项目编号从 10 更改为 45,其中项目名称为“网站”。 该项目表有一个 PK(pnumber 属性),它与另一个名为“WorksOn”的表相关,该表具有与项目表的主键 pnumber 相关的 FK(属性 pno)。

该图将是这样的:

在此处输入图像描述

我正在尝试类似的东西:

BEGIN TRANSACTION;
    ALTER TABLE Workson DROP CONSTRAINT fk_workson_projects;
    ALTER TABLE Projects DROP CONSTRAINT pk_projects;
    UPDATE Projects
        SET pnumber = 45
    WHERE pname = 'Website';
    ALTER TABLE Workson ADD CONSTRAINT fk_workson_projects FOREIGN KEY (pno) REFERENCES projects(pnumber);
    ALTER TABLE Projects ADD CONSTRAINT pk_projects PRIMARY KEY (pnumber);

COMMIT;

本质上是删除约束、更新表并再次添加相同的约束,但我不断收到此错误:

ERROR:  current transaction is aborted, commands ignored until end of transaction block
SQL state: 25P02

我如何通过删除约束并将它们重新添加到事务中来更新信息?

先感谢您

您需要先创建主键,然后才能创建引用它的外键。 查看错误消息会告诉您这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM