2012-04-20 11 views
1

外部キーコードが有効でない場合、データの挿入時にエラーをスローするトリガーを作成しようとしています。私は2つのテーブル、出版社とタイトルを持っています。パブリッシャーと同じように、タイトルにパブリッシャーコードがあります。私は挿入のために私のタイトルのトリガを持って、私は現在、存在しない場合、コードが挿入された行のパブリッシャコードと等しいパブリッシャの行を選択しています。 SQLが "複数の部分の識別子Inserted.PublisherCodeが見つかりませんでした"というエラーが表示されるため、これが正しい方法かどうかは分かりません。皆さんが助けてくれれば助かります。ありがとう。挿入されたテーブルT-SQLの列の参照

go 
create trigger TR_Title_PublisherCode_Insert 
on title 
for Insert 
as 
    if not exists(select * from Publisher where PublisherCode = Inserted.PublisherCode) 
    begin 
     raiserror('Publisher does not exist', 16, 1) 
     rollback tran 
    end 
+5

スキーマでPublisherCodeをFKとして正しく識別した場合、サーバーはこれを自動的に処理します。 – hkf

+0

はい、私は= Pを知っています。しかし、これは学校の授業のためのものであり、残念なことに、このようなことをするトリガーを作成する必要があります(誰もエクササイズが理にかなっているとは言いませんでした)。 – Jack

答えて

4

挿入され、DELETEDがあまりにも

テーブルですので、あなたはこれを行う必要があります:ところで

if not exists(
    select * from Publisher 
    where PublisherCode in (SELECT PublisherCode FROM inserted) 
) 

を、HKFが言ったように、あなたが外部キーとしてPublisherCodeを特定した場合、あなたは」勝ちましたトリガーを作成する必要があります

+0

ありがとう、それは私が必要なものです! – Jack

関連する問題