0

テーブルの外部キー属性に挿入されたデータが実際に参照テーブルに存在するかどうかをチェックするトリガーを指定する方法。存在する場合、アクションは実行されません。存在しない場合、トリガーは挿入されたタプルを削除する必要があります。

例: 2 つのテーブル R(A int Primary Key) と S(B int Primary Key , A int Foreign Key References R(A) ) があるとします。

私はこのようなトリガーを書きました:

Create Trigger DelS
BEFORE INSERT ON S 
FOR EACH ROW 
BEGIN 
Delete FROM S where New.A <> ( Select * from R;) );
End; 

トリガーの開始ブロックと終了ブロック内で内部サブクエリを指定する際に間違いを犯していると確信しています。私の質問は、どうすればそのようなトリガーを作成できますか?

4

1 に答える 1

0

外部キー制約は、あなたが望むものをよりよく達成しませんか?

ALTER TABLE [dbo].[TABLE2]  WITH CHECK 
ADD  CONSTRAINT [FK_TABLE2_TABLE1] FOREIGN KEY([FK_COLUMN])
REFERENCES [dbo].[TABLE1] ([PK_COLUMN])
GO

これが外部キー制約の目的です。具体的には、外部キー関係に違反するレコードの挿入を許可しません。

この例を読みやすくするために、異なる列名とテーブル名を使用していることに注意してください。S、A、R、B は混乱しているように見えます。

于 2010-05-13T23:53:40.827 に答える