2016-08-22 74 views
0

我有一個表用戶父鍵沒有找到解決辦法

CREATE TABLE "USER" 
    (
    USER_ID INTEGER NOT NULL , 
    CREATED_BY INTEGER NOT NULL , 
) ; 
ALTER TABLE "USER" ADD CONSTRAINT USER_PK PRIMARY KEY (USER_ID) ; 

對於這個特定的數據庫,我需要的CREATED_BY表是一個外鍵同桌USER_ID。

ALTER TABLE "USER" ADD CONSTRAINT USER_USER_FK FOREIGN KEY (CREATED_BY) REFERENCES "USER" (USER_ID) ; 

由於這個約束,我的insert語句總是會在第一個用戶上失敗。

有沒有解決這個問題的最佳做法?我可以禁用添加的第一個用戶的約束,然後重新啓用約束嗎?

+2

讓它'NULL'取代'NOT NULL'? – Siyual

+1

是USER_ID真的是一個自動增量?您可以按照其他人的建議使其爲空,然後一旦插入更新CREATED_BY到插入的用戶ID,然後再次使其不爲空。如果未自動增加,請保持原樣並在您的插入語句中爲您重複您的USER_ID值CREATED_BY值 – Matt

回答

1

您可以修改您的創建表腳本,以便它接受created_by列的空值。然後你可以插入你的第一條記錄(它有一個user_id和一個空的created_by)。邏輯上,該用戶表中的某個人必須是根記錄(換句話說,管理員或第一個用戶的記錄不是由其他人創建的)。

+1

定義「created_by」列時移除not null條件。 – hchaznedaroglu

+0

CREATED_BY INTEGER NOT NULL,變成CREATED_BY INTEGER – Matt

+0

我添加了一個試圖在註釋中輸入代碼的答案,這是不好的做法。乾杯 – Matt

相關問題