我正在使用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.
我已阅读其他帖子,但我仍然不明白这个错误?我认为这可能是因为我有一个复合键,但我引用了复合键的所有列。
答案 0 :(得分:1)
完全意味着它所说的......以某种模糊的方式: - )
在this page MySQL doc说:
建议您使用仅引用密钥的外键 都是UNIQUE(或PRIMARY)和NOT NULL。
换句话说,当您编写age varchar(2) references Employee(age)
时,必须将Employee(age)定义为UNIQUE或PRIMARY KEY。
员工(性别)将是相同的。
答案 1 :(得分:0)
我认为您打算使用"复合"外键约束,具有以下语法。
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)
);
这允许您从表中获取多个字段,并将它们(一起)与另一个表中的匹配字段链接起来。
答案 2 :(得分:0)
您应该使用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)
);