在我们的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)
但它没有编译,我在意大利语中有错误,例如'时间戳列无法明确设置'
任何提示?
答案 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