2016-08-22 87 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