【发布时间】:2017-02-04 06:12:34
【问题描述】:
create table STAFF
(
StaffID TINYINT IDENTITY NOT NULL,
StaffName varchar(20) NOT NULL,
Phone varchar(10) NOT NULL,
Gender char(01),
DoB date NOT NULL,
Mentor TINYINT,
Payment_ID TINYINT NOT NULL,
constraint staff_pk primary key (StaffID),
constraint staff_fk
foreign key (Payment_ID) references PAYMENT(Payment_ID),
constraint mentor_fk
foreign key (Mentor) references staff(StaffID)
);
表创建成功。但是当我要插入这样的值时:
insert into STAFF
values ('Adeesha', '077282018', 'M', '1997-11-30', '', '5'),
('Kavitha', '0772556899', 'F', '1956-11-28', '', '4'),
('Patee Aiya', '0775669844', 'M', '1954-01-04', '', '3'),
('Chanuka', '0772562984', 'M', '1997-02-24', '', '2'),
('Umesha', '0723328284', 'F', '1997-11-26', '', '3');
我收到以下错误:
消息 547,第 16 级,状态 0,第 1 行
INSERT 语句与 FOREIGN KEY SAME TABLE 约束“mentor_fk”冲突。
冲突发生在数据库“F_T”、表“dbo.STAFF”、列“StaffID”中。
【问题讨论】:
-
首先,TINYINT 似乎是一个糟糕的选择。其次,您需要先插入导师。除非您已经插入了导师,否则您无法插入已填写导师的任何人。如果导师也有导师,你需要先插入那个导师,直到你插入没有导师的人(NULL)。
标签: sql sql-server