3

以下のようにSQLトリガーを作成したいと思います。

CREATE TRIGGER Multi_Insert ON ITEMS, COMPONENT, LINK_INFO
FOR INSERT  
AS  
INSERT INTO Multi_Insert (ACTION, PUBLICATION_ID, ITEM_REFERENCE_ID, ITEM_TYPE, LAST_PUBLISHED_DATE, URL, SCHEMA_ID)  
SELECT 'ADD', PUBLICATION_ID, ITEM_REFERENCE_ID, ITEM_TYPE, LAST_PUBLISHED_DATE, URL, SCHEMA_ID  
FROM inserted  

上記のトリガーでは、以前の1つのテーブルからのすべての詳細が、現在のinおよびinITEMSのように、一部の値が他のテーブルに移動されています。SCHEMA_IDCOMPONENTURLLINK_INFO

実際にはinsert/update/delete、上記のテーブルで、テーブルの更新、挿入、削除を行います。これで、Multi_Insertすべてのテーブル挿入で挿入イベントの3つのトリガーを記述できますが、ITEMS1つのトリガーのみを使用してこれを実現したいと思います。COMPONENTLINK_INFO

それは可能ですか?

4

1 に答える 1

1
DECLARE @i INT, @d INT;
SELECT @i = COUNT(*) FROM inserted;
SELECT @d = COUNT(*) FROM deleted;
IF @i + @d > 0
BEGIN
    IF @i > 0 AND @d = 0
        -- insert
    IF @i > 0 AND @d > 0
        -- update
    IF @i = 0 AND @d > 0
        -- delete
END

私があなたに言ったように、私はあなたの質問についてあまり明確ではありません。そして、何であれ、私はあなたの質問から得ました。簡単なクエリを作成したので、参照を取得してそれに応じて使用できます。

上記のクエリ、@dおよび@i宣言された2つの変数から、2行目と3行count目から、異なるテーブルの(行数)を格納しています。そして、テーブルに行があるかどうかの値をチェックしています。次に、を実行しinsert、テーブルに行があるかどうかを確認updateした後。deleteさて、その中で難しい部分は何でしたか?trigger私はあなたに与えました、あなたが単一の休息で3つすべてを実行することができる方法はあなた次第です、あなたがそれらをどのように使うことができるか。このリンクを参照することもできます

于 2012-12-25T09:24:59.060 に答える