Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да добавя „последна промяна“ и създадена колона в таблица на SQL Server?

created колоната е проста - само DATETIME2(3) колона с ограничение по подразбиране, което се задава, когато се вмъкне нов ред:

Created DATETIME2(3) 
   CONSTRAINT DF_YourTable_Created DEFAULT (SYSDATETIME())

Така че, когато вмъкнете ред в YourTable и не посочвайте стойност за created , ще бъдат зададени текущите дата и час.

modified е малко повече работа, тъй като ще трябва да напишете тригер за AFTER UPDATE и го актуализирайте - не можете декларативно да кажете на SQL Server да направи това вместо вас....

Modified DATETIME2(3)

и след това

CREATE TRIGGER updateModified
ON dbo.YourTable
AFTER UPDATE 
AS
   UPDATE dbo.YourTable
   SET modified = SYSDATETIME()
   FROM Inserted i
   WHERE dbo.YourTable.PrimaryKey = i.PrimaryKey

Трябва да се присъедините към Inserted псевдо таблица, която съдържа всички редове които бяха актуализирани с вашата базова таблица на вашия първичен ключ за тази маса.

И ще трябва да създадете това AFTER UPDATE тригер за всяка таблица, която искате да имате modified колона в.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проблем с честотата на преброяване на елементи в T-SQL

  2. sp_MSForEachDB Невалидно използване на оператор със страничен ефект във функция

  3. Как да извлечете отпаднала съхранена процедура, функция, таблица в SQL Server 2008

  4. Съхранена процедура Вмъкване на няколко реда

  5. Рекурсивна заявка с CTE - SUM на дъщерни колони за даден родител