删除更新表的约束 - 当前事务被中止
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
如何通过删除约束并将它们重新添加到事务中来更新信息?
提前致谢
您需要创建主键,然后您可以创建引用它的外键。查看错误消息会告诉您这一点。
上下文:我想更新一个名为“项目”的 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
如何通过删除约束并将它们重新添加到事务中来更新信息?
提前致谢
您需要创建主键,然后您可以创建引用它的外键。查看错误消息会告诉您这一点。