2013-03-07 88 views
0

我在我的智慧结束在这里,所以任何帮助,将不胜感激。这里有三个查询我运行:SQL Server Express 2012外键不会填充到表

CREATE TABLE Contact 
(ContactID VARCHAR(10) NOT NULL, 
ContactCompanyName VARCHAR(80), 
ContactFirstName VARCHAR(30), 
ContactLastName VARCHAR(30), 
EmployeeID VARCHAR(15), 
CONSTRAINT Contact_PK PRIMARY KEY (ContactID)); 

GO 

CREATE TABLE CompanyRepresentative 
(EmployeeID VARCHAR(15) NOT NULL, 
RepFirstName VARCHAR(30), 
RepLastName VARCHAR(30), 
CONSTRAINT CompanyRepresentative_PK PRIMARY KEY (EmployeeID)); 

GO 

其次:

ALTER TABLE Contact 
ADD CONSTRAINT fk_EmployeeID1 
FOREIGN KEY(EmployeeID)REFERENCES CompanyRepresentative(EmployeeID); 

GO 

最后:

INSERT dbo.Contact (ContactID, ContactCompanyName, ContactFirstName,  

ContactLastName) 
VALUES 
('PC7432', 'Krueger Bakeries', 'Brian', 'Jones'), 
('PC5317', 'Advanced Data Storage', 'Mark', 'Pulley'), 
('PC2931', 'M&D Graphics and Design', 'Mike', 'Dorris'), 
('PC1753', 'Apex Digital Solutions', 'Janice', 'Becker'), 
('PC8527', 'Infensus Consultants', 'Narbeth', 'Pokrehl'); 

GO 

INSERT dbo.CompanyRepresentative (EmployeeID, RepFirstName, RepLastName) 
VALUES 
('TBOC53297', 'Mike', 'Hartman'), 
('TBOC32781', 'Lynn', 'Kynes'), 
('TBOC12783', 'Jason', 'McCann'), 
('TBOC43971', 'Susan', 'Mueller'), 
('TBOC29753', 'Greg', 'Krebs'); 

GO 

当我运行

select * from Contact 

雇员ID字段不不显示外部值关键EmployeeID从表dbo.CompanyRepresentative而不是它显示“NULL”。我错过了什么?

+2

它将如何自动插入员工ID?您必须通过查询插入它。 – 2013-03-07 02:17:55

+0

由于没有插入该列的值,因此它将为NULL。 'EmployeeID'中的外键不会自动插入数据。 – 2013-03-07 02:18:25

+1

添加一个外键不会让它神奇地填充。外键是一个约束条件,用于确保何时在该列中插入数据,该值存在于被引用的表中。在问题中的示例数据中,哪个公司代表行属于哪个员工?为什么? – 2013-03-07 02:19:50

回答

0

您必须插入EmployeeID这样。否则默认SQL ServerNULL插入到该字段中。

INSERT dbo.Contact (ContactID, ContactCompanyName, ContactFirstName, ContactLastName, EmployeeID) 
VALUES 
('PC7432', 'Krueger Bakeries', 'Brian', 'Jones', 'TBOC53297'), 
('PC5317', 'Advanced Data Storage', 'Mark', 'Pulley','TBOC32781'), 
('PC2931', 'M&D Graphics and Design', 'Mike', 'Dorris','TBOC12783'), 
('PC1753', 'Apex Digital Solutions', 'Janice', 'Becker','TBOC43971'), 
('PC8527', 'Infensus Consultants', 'Narbeth', 'Pokrehl','TBOC29753'); 

GO 
+0

谢谢!这就是我认为我需要做的事情,但是由于FK_constraints的原因,它不适用于我正在处理的更大的数据库。这将花费我更长的时间,但更新将节省一天。 – user2142403 2013-03-07 04:54:27