2013-03-07 63 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