【发布时间】:2014-09-08 20:06:21
【问题描述】:
我已经创建了表Employee
Create table Employee
(
FName varchar(20) Not Null,
LName varchar(20) Not Null,
SSN int Not Null,
BDate Datetime,
Address varchar(50),
Sex char(1),
Salary money,
Super_SSN int,
Primary Key(SSN),
Foreign Key(Super_SSN) references Employee(SSN)
)
当我尝试插入第一行时,
insert into Employee(FName,LName,SSN,BDate,Address,Sex,Salary,Super_SSN)
values('John','Smith',12345,'1965-01-09','Houston,TX','M',30000,33344)
我收到类似的错误..
错误:
INSERT 语句与 FOREIGN KEY SAME TABLE 约束“FK_Employee_Employee”冲突。冲突发生在数据库“Company”、表“dbo.Employee”、列“SSN”中。
【问题讨论】:
-
表中是否已经存在 33344 的 SSN(取自您的示例)? (已对您的格式问题进行了编辑)
-
不,这是该表中的第一行
-
super_ssn列可以是null还是必须一直填写? -
那么它当然会失败。您的外键约束表示表中必须存在该值。它不能在表格中,因为您要插入第一行。
-
请告知 SSN 是一个非常糟糕的缩写,它不是社会安全号码。更重要的是,请告诉我社保号不是主键。
标签: sql sql-server foreign-keys