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

Server sql pada pembaruan mengatur cap waktu saat ini

Dan jika Anda benar-benar membutuhkan stempel waktu - buat pemicu saat menyisipkan dan memperbarui yang memperbarui kolom dengan peta waktu saat ini.

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

Untuk memperbarui satu baris (yang telah diedit atau disisipkan), Anda harus menggunakan

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;

Ini semua yang Anda butuhkan. GETUTCDATE() jika Anda menginginkannya dalam UTC (yang saya sukai)

SQL Server benar-benar mengetahui baris yang diprosesnya

Ya, coba tebak - karena itulah yang Anda katakan pada SQL Server:Perbarui semua baris dalam tabel.

Set tidak memiliki baris saat ini;) Di situlah masalahnya dimulai.

Satu-satunya cara untuk melakukan itu persis seperti yang Anda inginkan ada di jawaban saya di awal:stempel waktu. Karena kesalahpahaman, saya menambahkan saran:dapatkan buku tentang dasar-dasar SQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Waktu kueri SQL habis saat dijalankan dari C#, cepat di SQL Server Management Studio

  2. Perbaiki "Setidaknya salah satu argumen untuk COALESCE harus berupa ekspresi yang bukan konstanta NULL" di SQL Server

  3. Tabel Pivot dan Kolom Gabungan

  4. PILIH JUMLAH(*);

  5. JPA SET IDENTITY_INSERT tidak berfungsi