sql >> データベース >  >> RDS >> Sqlserver

列が更新されたときに新しいテーブルに値を挿入するトリガーを作成する

    このようなものは、必要なことを行う必要があります。 INSERT があります 以下のステートメントは、実行された操作を示す値を MyLogTable に挿入します .

    CREATE TRIGGER [dbo].[TRIG_MyTable]
    ON [dbo].[MyTable]
    AFTER INSERT, UPDATE
    
    AS 
    
    DECLARE @INS int, @DEL int
    
    SELECT @INS = COUNT(*) FROM INSERTED
    SELECT @DEL = COUNT(*) FROM DELETED
    
    IF @INS > 0 AND @DEL > 0 
    BEGIN
    
        -- a record got updated, so log accordingly.
    
        INSERT INTO MyLogTable
        SELECT 'New Values', getdate() FROM INSERTED
    
        INSERT INTO MyLogTable
        SELECT 'Old Values', getdate() FROM DELETED
    
    END
    
    ELSE 
    BEGIN
    
        -- a new record was inserted.
    
        INSERT INTO MyLogTable
        SELECT 'Insert', getdate() FROM INSERTED
    
    END
      

    必要に応じて、INSERTED から列を追加することもできます そしてDELETED 挿入または更新された実際の列の値をキャプチャする場合は、ログ テーブルにも追加します。



    1. MySQL / PHP-数字を引用符で囲むと、クエリが壊れますか?

    2. postgresqlでテーブルの総数を取得するにはどうすればよいですか?

    3. データを分割するためのクエリ

    4. リテラルを使用したMysql正規表現エラー#1139-