未找到父键解决方法

时间:2016-08-22 18:12:38

标签: mysql sql

我有一张表 USER

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 个答案:

答案 0 :(得分:1)

您可以修改create table脚本,以便它接受created_by列的空值。然后你可以插入你的第一条记录(对于created_by有一个user_id和一个null)。逻辑上,该用户表中的某个人必须是根记录(换句话说,管理员或第一用户,其记录不是由其他人创建的)。

答案 1 :(得分:0)

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

如果表存在,则该行使列NOT NULL或不可为空。

ALTER TABLE USER MODIFY CREATED_BY INTEGER NOT NULL;

How to add not null constraint to existing column in MySQL5.1