我已经找到了答案,但我找不到答案。我有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值显示为空?
答案 0 :(得分:2)
外键不会自动填充,因为它不知道使用什么外键。您需要将行插入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)