0

こんにちは私は編集された行をコピーして新しいIDを設定するSQLトリガーを作成しました。IDで接続されている別のテーブルがあります。説明するのは難しいですが、例を挙げます。

製品の表1:

ID           BEZEICHNUNG            PREIS

45           Coffee                 5,60
46           Tea                    2,20

部屋から製品への接続を示す表2:

ProductID          RoomID
45                 11
45                 46
46                 48
46                 41

表1の最初の行の価格を更新すると、トリガーは次のような新しいIDで新しい行を作成します。

ID           BEZEICHNUNG            PREIS

45           Coffee                 5,60
46           Tea                    2,20
47           Coffee                 4

私の目標は、古い行に属するすべての部屋IDを含む新しいIDをテーブル2に挿入することです。

次のようになります。

ProductID          RoomID
45                 11
45                 46
46                 48
46                 41
47                 11
47                 46

私の現在のトリガーは次のようになります。

ALTER TRIGGER [dbo].[DIENSTLEISTUNG_UPDATE]
   ON [dbo].[DIENSTLEISTUNG]
   INSTEAD OF UPDATE
AS
BEGIN
      SET  NOCOUNT ON;

    INSERT INTO [DIENSTLEISTUNG] (BEZEICHNUNG, MENGENEINHEIT, 
        PREIS, BESCHREIBUNG, VORLAUFZEIT,
        AZ_MO, AZ_DI,AZ_MI,AZ_DO,AZ_FR,
        AZ_SA,AZ_SO,DIENSTLEISTUNGSART_ID,
        UPDATE_USER, UPDATE_DATE, RUESTZEIT,
        PERMISSIONS, KONTRAKTPOSITION,ARTIKELNUMMER,
        ANZAHL, BUCHUNGSHINWEIS, SONDERWUNSCH,FLAG)

    SELECT  BEZEICHNUNG, MENGENEINHEIT, 
        PREIS, BESCHREIBUNG, VORLAUFZEIT,
        AZ_MO, AZ_DI,AZ_MI,AZ_DO,AZ_FR,
        AZ_SA,AZ_SO,DIENSTLEISTUNGSART_ID,
        UPDATE_USER,GETDATE(),RUESTZEIT,
        PERMISSIONS, KONTRAKTPOSITION,ARTIKELNUMMER,
        ANZAHL, BUCHUNGSHINWEIS, SONDERWUNSCH,
        0 
    FROM INSERTED

    UPDATE  DIENSTLEISTUNG
    SET     FLAG = 1 
    FROM    DIENSTLEISTUNG 
            INNER JOIN INSERTED
                ON INSERTED.ID = DIENSTLEISTUNG.ID
SET  NOCOUNT OFF;      
END
4

1 に答える 1

1

トリガーで、挿入後に追加

 SELECT @intNewID = Scope_Identity()  

これにより、新しく挿入された製品のIDが取得されます

 INSERT table2 (ProductID, RoomID)  
 SELECT @intNewID, RoomID
 FROM deleted
      INNER JOIN table2 on deleted.productid=table2.productid

これにより、削除されたものから古い製品にリンクされている製品が取得され、それらがコピーされます

于 2012-07-18T08:29:27.977 に答える