簡體   English   中英

此列列表沒有匹配的唯一鍵或主鍵:SQL

[英]No matching unique or primary key for this column-list: SQL

我正在使用SQL,但遇到錯誤ORA-02270。

SQL> drop table employee;

Table dropped. 

SQL> Create Table Employee(
     age          varchar(2),
     gender          char(1),
     employee_no     char(6),
         references worksite(employee_no),
     Primary Key(age, gender)
     );

Table created.


SQL> Create Table Employee_type(
     age             varchar(2)
         references Employee(age),
     gender          char(1)
         references Employee(gender),
     employee_type   Varchar(12),

     Primary Key (age, gender, employee_type)
);


ERROR at line 3:

ORA-02270: no matching unique or primary key for this column-list.

我已經閱讀了其他帖子,但仍然不明白此錯誤? 我認為這可能是因為我有一個組合鍵,但我引用了該組合鍵的所有列。

確切地說它的意思...以某種晦澀的方式:-)

此頁面中, MySQL文檔說:

建議您使用僅引用既是UNIQUE(或PRIMARY)又不是NOT NULL的鍵的外鍵。

換句話說,當您寫age varchar(2) references Employee(age) ,必須將Employee(age)定義為UNIQUE或PRIMARY KEY。

對於Employee(性別)將是相同的。

我認為您打算使用“復合”外鍵約束,該約束具有以下語法。

CREATE TABLE Employee_type(
  age             varchar(2),
  gender          char(1),
  employee_type   Varchar(12),
  PRIMARY KEY (age, gender, employee_type),
  CONSTRAINT fk_employee FOREIGN KEY(age,gender) REFERENCES Employee(age,gender)
);

這樣一來,您可以從表中獲取多個字段,並將它們(與其他表中的匹配字段鏈接在一起)。

您應該使用CONSTRAINT設置復合外鍵。 我希望這個對你有用。

CREATE TABLE Employee_type(
  age             varchar(2),
  gender          char(1),
  employee_type   Varchar(12),
  PRIMARY KEY (age, gender, employee_type),
  CONSTRAINT fk_employee_age_gender FOREIGN KEY(age,gender) 
  REFERENCES Employee(age,gender)

);

暫無
暫無

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

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