Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Máy chủ Sql trên bản cập nhật đặt dấu thời gian hiện tại

Và nếu bạn thực sự cần dấu thời gian - thì hãy kích hoạt chèn và cập nhật để cập nhật cột với sơ đồ thời gian hiện tại.

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

Để cập nhật một hàng (đã được chỉnh sửa hoặc chèn), bạn nên sử dụng

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;

Đây là tất cả những gì bạn cần. GETUTCDATE () nếu bạn muốn nó ở UTC (mà tôi thích hơn)

SQL Server hoàn toàn biết các hàng mà nó xử lý

Vâng, hãy đoán xem - bởi vì đó chính xác là những gì bạn nói với SQL Server:Cập nhật tất cả các hàng trong bảng.

Bộ không có hàng hiện tại;) Đó là nơi vấn đề bắt đầu.

Cách duy nhất để làm điều đó chính xác như bạn muốn đã có trong câu trả lời của tôi ngay từ đầu:dấu thời gian. Tuy nhiên, do những quan niệm sai lầm, tôi thêm một lời khuyên:hãy mua một cuốn sách về kiến ​​thức cơ bản về 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. SQL Server 2008 Intellisense sự cố

  2. Tôi có thể lặp qua một biến bảng trong T-SQL không?

  3. tsql lần xuất hiện cuối cùng bên trong một chuỗi

  4. Công cụ cho dữ liệu bảng kịch bản

  5. Cách nhóm thời gian theo giờ hoặc theo 10 phút