簡體   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