外键未填充主键值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了外键未填充主键值相关的知识,希望对你有一定的参考价值。
我已经找到了答案,但我找不到它。我有2张桌子。两者都有自动生成的PK。表2中的PK是表1中的FK。由于它们都是自动生成的,我假设表1中的FK将填充从表2自动生成的值,但它不起作用。表1中的FK最终为null。这是我创建表1的SQL代码:
CREATE TABLE Employee_tbl (
EmployeeID int PRIMARY KEY IDENTITY,
LastName varchar(20) not null,
FirstName varchar(20) not null,
Age varchar(3) not null,
JobID int FOREIGN KEY REFERENCES JobTitle_tbl(JobID),
)
这是表2:
create table JobTitle_tbl(
JobID int PRIMARY KEY IDENTITY,
EEO1Classification varchar(50) not null,
Exempt_nonexempt_status varchar(20) not null,
)
我也有一些插入语句:
INSERT INTO Employee_tbl
(LastName, FirstName, Age)
Values
('Smith', 'John', '50'),
...
和:
INSERT into JobTitle_tbl (EEO1Classification, Job_title, )
VALUES ('Office/Clerical', 'Accounting Clerk', ),
当我查询表1时,为什么FK值显示为空?
答案
外键不会自动填充,因为它不知道使用什么外键。您需要将行插入JobTitle_tbl表,然后选择退出的ID(如果使用sql server,则使用@@ identity)
select id from JobTitle_tbl where Job_title = ''
另一种选择是更新insert语句以包含主键,尽管您必须先允许标识插入。
SET IDENTITY_INSERT JobTitle_tbl ON
into the JobTitle_tbl (id, title) values (1, 'Manager')
SET IDENTITY_INSERT JobTitle_tbl OFF
在任何一种情况下,您都需要使用您拥有的ID更新您的第一个插入语句。
insert into Employee_tbl (LastName, FirstName, JobID) values ('Smith', 'John', 1)
以上是关于外键未填充主键值的主要内容,如果未能解决你的问题,请参考以下文章