Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Pemicu pembaruan SQL hanya ketika kolom diubah

Anda memiliki dua cara untuk pertanyaan Anda :

1- Gunakan Perintah Pembaruan di Pemicu Anda.

ALTER TRIGGER [dbo].[tr_SCHEDULE_Modified]
   ON [dbo].[SCHEDULE]
   AFTER UPDATE
AS BEGIN
    SET NOCOUNT ON;
    IF UPDATE (QtyToRepair) 
    BEGIN
        UPDATE SCHEDULE 
        SET modified = GETDATE()
           , ModifiedUser = SUSER_NAME()
           , ModifiedHost = HOST_NAME()
        FROM SCHEDULE S INNER JOIN Inserted I 
        ON S.OrderNo = I.OrderNo and S.PartNumber = I.PartNumber
        WHERE S.QtyToRepair <> I.QtyToRepair
    END 
END

2- Gunakan Gabung antara tabel yang disisipkan dan tabel yang dihapus

ALTER TRIGGER [dbo].[tr_SCHEDULE_Modified]
   ON [dbo].[SCHEDULE]
   AFTER UPDATE
AS BEGIN
    SET NOCOUNT ON;    

    UPDATE SCHEDULE 
    SET modified = GETDATE()
       , ModifiedUser = SUSER_NAME()
       , ModifiedHost = HOST_NAME()
    FROM SCHEDULE S 
    INNER JOIN Inserted I ON S.OrderNo = I.OrderNo and S.PartNumber = I.PartNumber
    INNER JOIN Deleted D ON S.OrderNo = D.OrderNo and S.PartNumber = D.PartNumber                  
    WHERE S.QtyToRepair <> I.QtyToRepair
    AND D.QtyToRepair <> I.QtyToRepair
END

Saat Anda menggunakan perintah pembaruan untuk tabel SCHEDULE dan Setel QtyToRepair Kolom ke nilai baru, jika nilai baru sama dengan nilai lama dalam satu atau beberapa baris, solusi 1 memperbarui semua baris yang diperbarui dalam tabel Jadwal tetapi solusi 2 hanya memperbarui menjadwalkan baris yang nilai lama tidak sama dengan nilai baru.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengapa kueri berparameter menghasilkan rencana kueri yang jauh lebih lambat vs kueri non-parameter?

  2. Tambahkan Akun Email Database ke Profil (T-SQL)

  3. Pengantar Tabel Sementara di SQL Server

  4. Jalankan prosedur tersimpan di prosedur tersimpan lain di server SQL

  5. Menyimpan Tipe Data Biner di SQL Server