[英]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.