2012-02-14 103 views
0

我正在一個簡單的數據庫,我想有一個是很多關係,我已經創建了一個外鍵在ON UPDATE CASCADE,根據我的理解ON UPDATE CASCADE,如果我的主鍵獲得遞增,那麼引用它的另一個表中的外鍵也會增加/在另一個表中具有主鍵的值。但問題是因爲我在我的父表中插入數據,另一個表中的外鍵沒有得到我父表上的主鍵的值爲什麼它是這樣的?我的外鍵如何具有與其相關的密鑰的價值?這裏是爲你們來easiy瞭解enter image description here更新級聯SQL Server管理工作室

正如你可以在訂單表見P_ID不具有價值,即使它鏈接到P_ID在人民表

預期的結果將截圖在Orders表中,P_ID的值應該等於people表的P_ID,我插入了我的數據。

回答

3

但問題是因爲我插入數據在我的父表中。

您不會在插入時得到任何操作,只有on update

如果有人數1和以人一把手,如果將其更改爲2號,訂單將被更改爲2

你可能需要一個觸發。告訴我們什麼是預期的結果

編輯:

觸發例如:

create trigger InsertRecordOnOrder 
on People 
after insert 
as 
begin 
    insert into Orders 
    select * from INSERTED 
end 
+0

我預期的結果將是,在上面的截圖中,p_id在訂單表將有1作爲其值 – KyelJmD 2012-02-14 14:42:39

+0

@KyelJmD只是重複着迭戈說,這聽起來像你可能需要一個觸發器觸發插入。 – Dan 2012-02-14 14:46:24

+0

這不是外鍵的目標,特別是ON UPDATE約束。你應該留下你的外鍵(沒有ON UPDATE,因爲我不認爲你需要它),並在Peoples表上創建一個INSTEAD INSERT的觸發器,所以每次插入一個人時它都會自動插入一個命令 – Diego 2012-02-14 14:47:27

相關問題