数据库 – Oracle(ORA-02270):此列列表错误不匹配唯一或主键
我有两个表,表JOB和表USER,这里是结构
CREATE TABLE JOB ( ID NUMBER NOT NULL,USERID NUMBER,CONSTRAINT B_PK PRIMARY KEY ( ID ) ENABLE ); CREATE TABLE USER ( ID NUMBER NOT NULL,CONSTRAINT U_PK PRIMARY KEY ( ID ) ENABLE ); 现在,我想添加外键约束到JOB引用USER表,as Alter Table JOB ADD CONSTRAINT FK_USERID FOREIGN KEY(USERID) REFERENCES USER(ID); 这会抛出Oracle(ORA-02270):对于列列表错误,没有匹配的唯一或主键,做一些调查,似乎我们需要对USERID有唯一的键或主键约束,但是我不能像USERID一样有多个JOBS与他相关,有关如何解决这个问题的任何想法或建议? 研究ORA-02270和SO related question 解决方法ORA-2270错误非常简单:当我们在外键中引用的列与父表中的主键或唯一约束不匹配时,会发生这种错误.常见的原因是>父母完全没有约束 在您发布的代码中似乎并非如此.但是这是一个红色的鲱鱼,因为您的代码不像您发布的那样运行.从以前的编辑来看,我认为你不是发布你的实际代码,而是一些简化的例子.不幸的是,在简化过程中,您已经根除了导致ORA-2270错误的原因. 因为,如果我们修复你的代码运行,它将运行.一路走来 SQL> CREATE TABLE JOB ( ID NUMBER NOT NULL,CONSTRAINT B_PK PRIMARY KEY ( ID ) ENABLE ); 2 3 4 5 6 Table created. SQL> CREATE TABLE USER ( ID NUMBER NOT NULL,CONSTRAINT U_PK PRIMARY KEY ( ID ) ENABLE ); 2 3 4 5 CREATE TABLE USER * ERROR at line 1: ORA-00903: invalid table name SQL> 因此,该语句失败,因为USER是一个保留关键字,我们不能为表USER命名.我们来解决一下: SQL> 1 1* CREATE TABLE USER SQL> a s 1* CREATE TABLE USERs SQL> l 1 CREATE TABLE USERs 2 ( 3 ID NUMBER NOT NULL,4 CONSTRAINT U_PK PRIMARY KEY ( ID ) ENABLE 5* ) SQL> r 1 CREATE TABLE USERs 2 ( 3 ID NUMBER NOT NULL,4 CONSTRAINT U_PK PRIMARY KEY ( ID ) ENABLE 5* ) Table created. SQL> Alter Table JOB ADD CONSTRAINT FK_USERID FOREIGN KEY(USERID) REFERENCES USERS(ID); Table altered. SQL> 和洛!没有ORA-2270错误. 所以,我们在这里做的不多,可以帮助你进一步.你的代码有错误.你可以在这里发布你的代码,我们中的一个可以发现你的错误.或者你可以检查自己的代码,并发现自己. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |