获取插入的时间戳

时间:2016-07-19 15:50:23

标签: sql-server tsql

在我们的T-SQL数据库中我们有一些时间戳列,每次插入或更新记录时,我们从记录中选择我们插入或更新的相同密钥的时间戳。

我们希望避免双重搜索:对于更新和选择,我们尝试过这样的事情:

declare @table table(id int, val timestamp not null)
declare @table2 table(val timestamp)

insert @table(id) 
output inserted.val into @table2
values (1)

但它没有编译,我在意大利语中有错误,例如'时间戳列无法明确设置'

任何提示?

1 个答案:

答案 0 :(得分:1)

问题是TIMESTAMP是一种自动生成的数据类型,只是以只读方式公开。它基于系统内的递增数字。

SQL Server: Cannot insert an explicit value into a timestamp column

试试这个:

DECLARE @table TABLE(id INT, val TIMESTAMP NOT NULL)
DECLARE @table2 TABLE(val DATETIME)

INSERT @table (id)
OUTPUT inserted.val INTO @table2(val)
VALUES (1)

SELECT
  t.id,
  t.val,
  CONVERT( TIMESTAMP, t2.val ) AS table2_timestamp
FROM
  @table AS t,
  @table2 AS t2