Sqlserver
 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;

Това трябва да е всичко, от което се нуждаете. GETUTCDATE(), ако искате да е в UTC (което аз предпочитам)

SQL Server напълно познава редовете, които обработва

Да, познайте какво – защото точно това казвате на SQL Server:Актуализирайте всички редове в таблицата.

Наборите нямат текущ ред;) Тук започва проблемът.

Единственият начин да направите това точно както искате е в отговора ми в началото:клеймо за време. Поради погрешните схващания обаче добавям съвет:вземете книга за основите на 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 Trace за заснемане на събития на SQL Server

  2. Получаване на всички деца на родител с помощта на MSSQL заявка

  3. Защо се появи грешка, свързана с мрежата или специфична за екземпляр, при установяване на връзка със SQL Server?

  4. Как да преименувате всички ограничения по подразбиране според стандартите за именуване или конвенцията за именуване в SQL Server - SQL Server / TSQL урок, част 93

  5. Къде да използвате Outer Apply