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必须以某种方式区分更新列和保持更新行中的值不变。从逻辑上讲,必须存在某种区别。