这是从
获取外键的关系表CREATE TABLE EMPLOYEE(
ENUM DECIMAL(12) NOT NULL,
FNAME VARCHAR(50) NOT NULL,
INITIALS VARCHAR(5) NULL,
LNAME VARCHAR(50) NOT NULL,
DOB DATE NULL,
BLDG DECIMAL(3) NOT NULL,
STREET VARCHAR(50) NOT NULL,
SUBURB VARCHAR(50) NOT NULL,
STATE VARCHAR(5) NOT NULL,
ZIPCODE DECIMAL(4) NOT NULL,
CONSTRAINT EMPLOYEE_PKEY PRIMARY KEY(ENUM) );
我想创建一个名为EMPNAME的新表,但在添加外键约束时出错
CREATE TABLE EMPNAME(
ENUM DECIMAL(12) NOT NULL,
FNAME VARCHAR(50) NOT NULL,
INITIALS VARCHAR(5) NOT NULL,
LNAME VARCHAR(50) NOT NULL,
CONSTRAINT EMPNAME_PKEY PRIMARY KEY(ENUM),
CONSTRAINT EMPNAME_FKEY FOREIGN KEY(ENUM, FNAME, INITIALS, LNAME) REFERENCES EMPLOYEE(ENUM, FNAME, INITIALS, LNAME)
);
如果我只将主键枚举设置为外键,但是当我将所有属性设置为外键时,我不会收到错误,我不断收到错误。
谢谢
答案 0 :(得分:0)
您的引用列必须具有索引才能用作外键,因此在employee
表中的这些列上添加索引:
CREATE TABLE EMPLOYEE (
ENUM DECIMAL (12) NOT NULL,
FNAME VARCHAR (50) NOT NULL,
INITIALS VARCHAR (5) NULL,
LNAME VARCHAR (50) NOT NULL,
DOB DATE NULL,
BLDG DECIMAL (3) NOT NULL,
STREET VARCHAR (50) NOT NULL,
SUBURB VARCHAR (50) NOT NULL,
STATE VARCHAR (5) NOT NULL,
ZIPCODE DECIMAL (4) NOT NULL,
CONSTRAINT EMPLOYEE_PKEY PRIMARY KEY (ENUM),
INDEX `FKEYS` (ENUM, FNAME, INITIALS, LNAME)
);
然后您就可以将约束添加到第二个表中。