2016-03-31 75 views
0

我試圖創建在Microsoft SQL Server 2012的外鍵約束與下面的模式:如何在Microsoft SQL Server 2012中創建外鍵約束?

CREATE TABLE Period 
(
    Period_ID int IDENTITY(1,1) NOT NULL PRIMARY KEY, 
    Training_History_Start_Period datetime NULL, 
    Training_History_End_Period datetime NULL, 
    Training_Target_Start_Period datetime NULL, 
    Training_Target_End_Period datetime NULL, 
    Scoring_History_Start_Period datetime NULL, 
    Scoring_History_End_Period datetime NULL, 
    Scoring_Target_Start_Period datetime NULL, 
    Scoring_Target_End_Period datetime NULL 
); 

CREATE TABLE RiskScore 
(
    Period_ID int FOREIGN KEY REFERENCES Period(Period_ID), 
    Driver_ID int NULL, 
    Risk_Score numeric(10,5) NULL, 
    Run_on datetime NULL 
); 

在將數據插入到數據庫,表期間服用所需的數據,但RiskScore表正在採取Period_ID列的時間。此列沒有從期間表中取出Period_ID。

有人幫助我。

在此先感謝。

+3

您是否期望'RiskScore'自動從'Period'中獲取數據?它只是一個'外鍵',你需要提供這些值 – Raj

回答

0

外鍵:定義

外鍵是在SQL Server數據庫內強制實施參照完整性的一種方法。外鍵意味着一個表中的值也必須出現在另一個表中。被引用的表稱爲父表,而帶有外鍵的表稱爲子表。

在你的情況,

時期是你的父表,RiskScore是你的子表。

外鍵強制執行參照完整性,但不會將數據從父表移入子表。您應該手動將值填充到您的子表中。假設如果子表中的給定值不存在於父表中,那麼您將收到錯誤消息。