Triggers 更新上次修改的日期列

Triggers 更新上次修改的日期列,triggers,sql-server-2012,constraints,last-modified,modified-date,Triggers,Sql Server 2012,Constraints,Last Modified,Modified Date,我有一张这样的桌子: id name modified 11 John 2016-07-12 15:49:45 22 Abraham 2016-07-12 15:52:03 我需要更新“modified”列,该列跟踪行的最后修改日期。我已经使用触发器完成了这项工作,但已经读到触发器会消耗性能。有没有一种方法可以使用约束来实现这一点 在UPDATE子句中可以使用DEFAULT约束和DEFAULT关键字。请参见以下示例: CREATE TABLE UpdateTest ( I

我有一张这样的桌子:

id  name    modified
11  John    2016-07-12 15:49:45
22  Abraham 2016-07-12 15:52:03

我需要更新“modified”列,该列跟踪行的最后修改日期。我已经使用触发器完成了这项工作,但已经读到触发器会消耗性能。有没有一种方法可以使用约束来实现这一点

在UPDATE子句中可以使用DEFAULT约束和DEFAULT关键字。请参见以下示例:

CREATE TABLE UpdateTest
(
  ID int IDENTITY,
  Name varchar(10),
  Modified datetime2(2) CONSTRAINT DF_Modified DEFAULT (SYSDATETIME())
)

--ID from IDENTITY, Modified from DEFAULT implicitly
INSERT UpdateTest(Name) VALUES('Test')

--Modified from DEFAULT explicitly
UPDATE UpdateTest SET Name='Test2', Modified=DEFAULT

在UPDATE子句中可以使用DEFAULT约束和DEFAULT关键字。请参见以下示例:

CREATE TABLE UpdateTest
(
  ID int IDENTITY,
  Name varchar(10),
  Modified datetime2(2) CONSTRAINT DF_Modified DEFAULT (SYSDATETIME())
)

--ID from IDENTITY, Modified from DEFAULT implicitly
INSERT UpdateTest(Name) VALUES('Test')

--Modified from DEFAULT explicitly
UPDATE UpdateTest SET Name='Test2', Modified=DEFAULT

戴尔:谢谢。在更新过程中,我们需要显式地传递修改列的“DEFAULT”参数,是否有方法在不向修改列传递任何值的情况下获取修改的日期?如果必须传递修改列的参数,我可以为每次更新将修改的列值设为getdate()。前任;更新updateTest集名称='Test2',Modified=getdate(),其中ID='some_value'。我也可以在java代码中每次传递getdate()。很抱歉,我在问题中没有提到这个条件,请您重新检查是否有其他选择。据我所知,无法忽略默认关键字或显式GETDATE()调用。SQL Server必须以某种方式区分更新列和保持更新行中的值不变。从逻辑上讲,一定存在某种区别。戴尔:谢谢。在更新过程中,我们需要显式地传递修改列的“DEFAULT”参数,是否有方法在不向修改列传递任何值的情况下获取修改的日期?如果必须传递修改列的参数,我可以为每次更新将修改的列值设为getdate()。前任;更新updateTest集名称='Test2',Modified=getdate(),其中ID='some_value'。我也可以在java代码中每次传递getdate()。很抱歉,我在问题中没有提到这个条件,请您重新检查是否有其他选择。据我所知,无法忽略默认关键字或显式GETDATE()调用。SQL Server必须以某种方式区分更新列和保持更新行中的值不变。从逻辑上讲,必须存在某种区别。