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

更新時のSQLサーバーは現在のタイムスタンプを設定します

    また、本当にタイムスタンプが必要な場合は、挿入と更新のトリガーを作成して、現在のタイムスタンプで列を更新します。

    CREATE TRIGGER dbo.trgAfterUpdate ON dbo.YourTable
    AFTER INSERT, UPDATE 
    AS
      UPDATE dbo.YourTable
      SET last_changed = GETDATE()
      FROM Inserted i
    

    (編集または挿入された)単一の行を更新するには、

    を使用する必要があります。
    CREATE TRIGGER dbo.trgAfterUpdate ON dbo.YourTable
    AFTER INSERT, UPDATE 
    AS
      UPDATE f set LastUpdate=GETDATE() 
      FROM 
      dbo.[YourTable] AS f 
      INNER JOIN inserted 
      AS i 
      ON f.rowID = i.rowID;
    

    これらはあなたが必要とするすべてでなければなりません。 UTCで必要な場合はGETUTCDATE()(私が好む)

    SQL Serverは、処理する行を完全に認識しています

    ええ、何を推測してください-それはまさにあなたがSQLServerに言うことだからです:テーブルのすべての行を更新してください。

    セットには現在の行がありません;)ここから問題が始まります。

    あなたが望むようにそれを正確に行う唯一の方法は、最初の私の答えであるタイムスタンプです。ただし、誤解があるため、アドバイスを追加します。SQLの基本に関する本を入手してください。



    1. 日付範囲で区切られた行数のクエリ

    2. PHP:年齢から誕生日を計算する

    3. MySQLサーバーのInnoDBバッファープールサイズの計算

    4. 不正なダウンロードからファイルを保護する方法