1

わかりました。今日は2時間前に大部分を検索しましたが、質問に対する答えが見つかりませんでした。だから私はあなたが私を助けることができるかどうかを確認しようとします。

したがって、私がやりたいのは、テーブルAに挿入するときに、挿入されているものがテーブルBにあるかどうかを確認するトリガーを作成することです。トリガーがある場合は、テーブルに挿入せず、挿入を無視します。それ以外の場合は、挿入を続行します。テーブルAに。

たとえば、[実際には私の問題と非常によく似ていますが、名前が異なるだけです]

テーブルAとテーブルBがあるとします。テーブルBは、「名前」と「住所」で構成されています。表Aには、「名前」、「住所」、「お気に入りの色」、およびその他の約3〜4列が含まれています。

テーブルAに「スー」、「私書箱1ルナアベニュー」、「グレー」などを挿入したいのですが、テーブルBにはすでに「スー」、「私書箱1ルナアベニュー」の組み合わせがあります。 、だから私はその挿入を無視して続行したいと思います。

「名前」と「住所」の組み合わせが重複することを許可しないという制約があることを除いて、「名前」と「住所」のどちらもいかなる種類のキーでもありません。

参照ポイントとしてSQLServer2008R2を使用しています。

よろしくお願いします!^^

4

2 に答える 2

3

次のようなもの:

CREATE TRIGGER T_TableA_I
ON TableA
INSTEAD OF INSERT
AS
     INSERT INTO TableA (Name,Address,/* Other columns */)
     SELECT i.Name,i.Address,/* Other columns from inserted */
     FROM
         inserted i
             left join
         TableB b
             on
                 i.Name = b.Name and
                 i.Address = b.Address
     WHERE
         b.Name is null --So the join was unsuccessful.

しかし、後でTabelBに挿入する必要があるかどうかについてはまだ心配です。

于 2012-05-30T07:08:31.497 に答える
0

INSERTが発生する前にアクションを実行できるINSTEADOFトリガーを見てください。

INSTEAD OFトリガーは、次のようなアクションを実行できます。

  • バッチの一部を無視します。
  • バッチの一部を処理せず、問題のある行をログに記録します。
  • エラー状態が発生したときに代替アクションを実行します。
于 2012-05-30T04:17:33.803 に答える