2017-11-13 5 views
0

は、私はこれらのテーブルを持っていると言う:SQL Serverでトリガを使用して外部キー参照テーブルを更新する方法

CREATE TABLE person 
(
    person_id INT NOT NULL PRIMARY KEY, 
    name VARCHAR NOT NULL, 
    phone INT, 
); 

CREATE TABLE volunteers 
(
    person_id INT NOT NULL PRIMARY KEY, 
    skill VARCHAR, 
    FOREIGN KEY (person_id) REFERENCES person(person_id) 
     ON DELETE CASCADE 
     ON UPDATE CASCADE 
); 

は私がvolunteersテーブルに新しいレコードを挿入する際personテーブルに挿入できvolunteersにトリガーを作成することができます。このよう

INSERT INTO volunteers (person_id, name, skill) 
VALUES (12345, 'abc xyz', 'cooking'); 

トリガーを使用していない場合は、いずれかの選択肢がありますか?

+1

。あなたは正しく質問されていません。 – Namphibian

+0

'Volunteers'テーブルには' name'カラムがありません。その挿入ステートメントは失敗します。 –

+0

[蹴り癖が悪い](長さなしのVARCHARの宣言)(http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kick-declaring-varchar-without-length .aspx) - 使用する 'varchar'変数とパラメータの長さを常に**指定する必要があります –

答えて

1

私はあなたのためのコードを記述するつもりはないが、あなたは、次の操作を行うことができます

  • は、テーブルを結合し、あなたが望むすべての列を持つビューを作成します。
  • ビューのそのようなトリガの使用はdocumentationで定義されているビューに

を更新するinstead ofトリガーを書きます。

ビューは次のようになります。あなたが人やボランティアにトリガを作成したい

create view v_volunteers as 
    select v.person_id, p.name, v.skill 
    from volunteers v join 
     people p 
     on p.person_id = v.person_id; 
関連する問題