2012-02-14 16 views
0

私は1対多の関係を持ちたいと思っています。ON UPDATE CASCADEにある外部キーを作成しました。私の理解度に基づいてON UPDATE CASCADE、私のプライマリがインクリメントされると、それを参照する他のテーブルの外部キーもインクリメントされます/他のテーブルのプライマリの値を持ちます。しかし、問題は私の親テーブルにデータを挿入すると、他のテーブルの外部キーが親テーブルのプライマリの値を取得しなかったことです。私の外来キーは、それに関連するキーの価値をどのように持っていますか?ここにあなたたちは、あなたがそれをSQL Server Management Studio更新時カスケード

期待される結果は、人々のテーブルにP_IDになりますリンクされているにもかかわらず、値を持たない受注テーブルにP_IDを見ることができるようにenter image description here

理解easiyするためのスクリーンショットですOrdersテーブルでP_IDの値が私のデータを挿入したpeopleテーブルのP_IDに相当することになります。

答えて

3

ただし、問題は私の親テーブルにデータを挿入することです。

あなたは挿入時に何の処置も取らず、on updateのみです。あなたは人の数1と人々のナンバーワンのオーダーを持っている場合は、数2に変更した場合

は、順序はあなたが引き金をすることができ2.

に変更されます。私はあなたがUPDATE CASCADE ON誤解し、考える

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

私の予想結果は、上のスクリーンショットでは、受注テーブルのP_IDは、あなたがその火災トリガーを望むことのように聞こえる、ちょうどサンディエゴが言っエコーその値として1 – KyelJmD

+0

@KyelJmDを持っているということだろうインサートに。 – Dan

+0

は、特にUP UPDATE制約を持つ外部キーの目的ではありません。あなたはあなたがそれを注文を挿入するたびに外国人のキーを(私はあなたがそれを必要と思わないので)更新せずに、人のテーブルにINSERTの代わりにトリガーを作成する必要があります – Diego

関連する問題