2016-07-19 29 views
1

我們有一些timestamp列,每次插入或更新記錄時,都會從記錄中選擇插入或更新的同一個鍵的時間戳。在我們的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

問題是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