2016-07-19 11 views
1

в нашу базу данных 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 
Смежные вопросы