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

Dropping constraints to update tables - Current transaction is aborted

上下文:我想更新一个名为“项目”的 table 并将项目编号从 10 更改为 45,其中项目名称为“网站”。此项目 table 有一个 PK(pnumber 属性)及其与另一个名为“WorksOn”的 table 相关,后者具有与项目 table 的主键 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;

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

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

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

提前致谢

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