2016-07-19 10 views
1

in unserer T-SQL-Datenbank Wir haben einige Timestamp-Spalte, jedes Mal, wenn wir einen Datensatz einfügen oder aktualisieren wir wählen den Zeitstempel aus dem Datensatz den gleichen Schlüssel, den wir eingefügt oder aktualisiert.Get eingefügt Zeitstempel

Wir die doppelte Suche vermeiden wollen: für die Aktualisierung und für ausgewählte, haben wir versucht, so etwas wie dieses:

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

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

aber nicht kompiliert, ich habe einen Fehler in Italienisch, so etwas wie ‚eine Timestamp-Spalte kann nicht explizit eingestellt werden

ein Hinweis?

Antwort

1

Das Problem ist, dass TIMESTAMP ein Datentyp ist, der automatisch generiert und nur als schreibgeschützt verfügbar gemacht wird. Es basiert auf einer steigenden Zahl innerhalb des Systems.

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

Versuchen Sie folgendes:

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 
Verwandte Themen