簡體   English   中英

Oracle 12c-我無法修改ORA-02275列的約束

[英]Oracle 12c - I cannot modify constraint of column ORA-02275

我創建一個表ASSIGNMENTS:

CREATE TABLE assignments (
    id_project NUMBER(4) NOT NULL CONSTRAINT fk_assignments_01 REFERENCES projects (id_project),
    empl_number NUMBER(6) NOT NULL CONSTRAINT fk_assignments_02 REFERENCES employees (empl_id),
    start DATE DEFAULT SYSDATE,
    end DATE,
        CONSTRAINT chk_assignements_dates CHECK (end > start),
    rate NUMBER(7, 2),
        CONSTRAINT chk_assignements_rate CHECK (rate > 0),
    role VARCHAR2(20),
        CONSTRAINT chk_assignements_role CHECK (rola IN ('ANALYST', 'DEVELOPER'))
);

現在,我必須修改約束fk_assignments_02。 我想將fk_assignments_02設置為DELETE CASCADE。 我嘗試這樣做如下:

ALTER TABLE assignments
    MODIFY id_project NUMBER(4) NOT NULL CONSTRAINT fk_assignments_01 REFERENCES projects (id_project) ON DELETE CASCADE;

但是我收到一個錯誤:ORA-02275:表中已經存在這樣的引用約束

您無法做到這一點-您必須刪除並重新添加約束。 Oracle中沒有規定更改ON DELETE操作,該操作是REFERENCES子句的一部分,而不是約束狀態的一部分。

所以要做到這一點,你需要做

ALTER TABLE ASSIGNMENTS DROP CONSTRAINT FK_ASSIGNMENTS_02;

其次是

ALTER TABLE ASSIGNMENTS
  ADD CONSTRAINT FK_ASSIGNMENTS_02
    FOREIGN KEY (ID_PROJECT) REFERENCES PROJECT (ID_PROJECT)
      ON DELETE CASCADE;

祝你好運。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM