Sql server 在sql server 2008中创建和修改时间戳

Sql server 在sql server 2008中创建和修改时间戳,sql-server,timestamp,Sql Server,Timestamp,我是SQL新手,我想为createdtime和modifiedtime列创建时间戳。 然后比较createdtime和modifiedtime,如果modifiedtime大于10分钟,则不允许更新行。 我怎样才能做到这一点? 我正在使用SQLServer2008R2 感谢创建的时间戳很容易:类型为DATETIME(对于2005年以前的SQL Server)或DATETIME2(3)(2008年或更高版本)的列具有默认约束SYSDATETIME() SQL Server 2000/2005: C

我是SQL新手,我想为createdtime和modifiedtime列创建时间戳。 然后比较createdtime和modifiedtime,如果modifiedtime大于10分钟,则不允许更新行。 我怎样才能做到这一点? 我正在使用SQLServer2008R2
感谢

创建的时间戳很容易:类型为
DATETIME
(对于2005年以前的SQL Server)或
DATETIME2(3)
(2008年或更高版本)的列具有
默认约束SYSDATETIME()

SQL Server 2000/2005:

CREATE TABLE dbo.YourTable 
 ( ..... your columns ......,
   CreatedTimeStamp DATETIME NOT NULL
       CONSTRAINT DF_YourTable_Created DEFAULT (GETDATE())
 )
SQL Server 2008及更新版本:

CREATE TABLE dbo.YourTable 
 ( ..... your columns ......,
   CreatedTimeStamp DATETIME2(3) NOT NULL
       CONSTRAINT DF_YourTable_Created DEFAULT (SYSDATETIME())
 )
修改后的时间戳必须在每个表上使用触发器进行处理

CREATE TRIGGER trgYourTableModified
AFTER UPDATE ON dbo.YourTable
AS
    UPDATE dbo.YourTable
    SET ModifiedDate = GETDATE()  -- or use SYSDATETIME() for 2008 and newer
    FROM Inserted i
    WHERE i.ID = dbo.YourTable.ID
在此触发器中,您还可以检查10分钟的间隔-如果间隔超过10分钟,只需在触发器中调用
回滚事务
,即可停止更新

您需要意识到SQL Server中的触发器是每个语句的,而不是每行!因此,如果你的
UPDATE
语句更新了50行,你的触发器将触发一次,触发器中插入的
和删除的
伪表将包含50行要处理。

声明@CreatedTime-Datetime,@ModifiedTime-Datetime
Declare @CreatedTime Datetime, @ModifiedTime DateTime
Set @CreatedTime='2013-08-15 14:10:00'
Set @ModifiedTime='2013-08-15 14:50:00'


if(dateDiff(Minute,@CreatedTime,@ModifiedTime)<10)
Update Statement
Else
Print 'Table Can not be updated'
设置@CreatedTime='2013-08-15 14:10:00' 设置@ModifiedTime='2013-08-15 14:50:00'
如果(dateDiff(Minute,@CreatedTime,@ModifiedTime)感谢您已经将时间和日期设置为当前,但我想使用在第一次输入时存储数据时自动设置的当前时间方式。