簡體   English   中英

錯誤ORA-02270:此列列表沒有匹配的唯一鍵或主鍵

[英]error ORA-02270: no matching unique or primary key for this column-list

我正在練習一個實驗手冊練習,我必須在其中創建6個表格。 創建5是成功的。

但有一條線是錯誤的

constraint GRADE_Designation_FK 
   FOREIGN KEY(Designation) References EMPLOYEE(Designation),

第7行的錯誤:

ORA-02270:此列列表沒有匹配的唯一鍵或主鍵

2個鏈接表的查詢是

create table EMPLOYEE
(
    Empno number(4) constraint EMPLOYEE_Empno_PK PRIMARY KEY,
    Name varchar2(10) not null,
    Designation varchar2(50),
    Qualification varchar2(10),
    Joindate date
);

create table GRADE
(
    Designation varchar2(50) constraint GRADE_Designation_PK PRIMARY KEY,
    Grade number(2),
    TotalPosts number(4),
    PostsAvailable number(4),

    constraint GRADE_Grade_CK  check(Grade between 1 and 20),
    constraint GRADE_PostsAvailable_CK check(PostsAvailable <= TotalPosts),
    constraint GRADE_Designation_FK FOREIGN KEY(Designation) References EMPLOYEE(Designation)
);

試着

create table GRADE
(
    Designation varchar2(50) constraint GRADE_Designation_PK PRIMARY KEY,
    Grade number(2),
    TotalPosts number(4),
    PostsAvailable number(4),

    constraint GRADE_Grade_CK  check(Grade between 1 and 20),
    constraint GRADE_PostsAvailable_CK check(PostsAvailable <= TotalPosts)
);

create table EMPLOYEE
(
    Empno number(4) constraint EMPLOYEE_Empno_PK PRIMARY KEY,
    Name varchar2(10) not null,
    Designation varchar2(50) NOT NULL UNIQUE,
    Qualification varchar2(10),
    Joindate date default sysdate

    constraint EMPLOYEE_Designation_FK FOREIGN KEY(Designation) References GRADE(Designation),
);

現在新的錯誤

約束EMPLOYEE_Designation_FK FOREIGN KEY(名稱)參考文獻GRADE(指定)*

第8行的錯誤:

ORA-02253:此處不允許使用約束規范

你在錯誤的桌子上有約束。 您應該在EMPLOYEE.DESIGNATION上創建一個外鍵,引用回GRADE.DESIGNATION。

所以你的表應該是這樣的:

create table GRADE
(
Designation varchar2(50) constraint GRADE_Designation_PK PRIMARY KEY,
Grade number(2),
TotalPosts number(4),
PostsAvailable number(4),
constraint GRADE_Grade_CK  check(Grade between 1 and 20),
constraint GRADE_PostsAvailable_CK check(PostsAvailable <= TotalPosts),
);

create table EMPLOYEE
(
Empno number(4) constraint EMPLOYEE_Empno_PK PRIMARY KEY,
Name varchar2(10) not null,
Designation varchar2(50)
  constraint EMPLOYEE_FK1
    REFERENCES GRADE(DESIGNATION),
Qualification varchar2(10),
Joindate date
);

分享和享受。

ORA-02270:此列列表沒有匹配的唯一鍵或主鍵

這個錯誤是非常自我解釋的,並告訴你什么是錯的。 在您的情況下,您嘗試在非主鍵列上創建外鍵,因此錯誤

constraint GRADE_Designation_FK FOREIGN KEY(Designation) 
               References EMPLOYEE(Designation)
                                  <--Here

EMPLOYEE表中的Designation不是主鍵,您無法在非主鍵列上創建FK。 你的表創建應該看起來像

create table GRADE
(
Designation varchar2(50) constraint GRADE_Designation_PK PRIMARY KEY,
employee_Empno number(4),
Grade number(2),
TotalPosts number(4),
PostsAvailable number(4),
constraint GRADE_Grade_CK  check(Grade between 1 and 20),
constraint GRADE_PostsAvailable_CK check(PostsAvailable <= TotalPosts),
constraint GRADE_Designation_FK FOREIGN KEY(employee_Empno) 
References EMPLOYEE(Empno));

執行順序導致我們出現此問題,請確保在添加這些約束之前創建了使用NOT NULL啟用的表以避免此錯誤。

暫無
暫無

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

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