我在SQL Server中有一个表,tblMain.有一个触发器,当一行改变时,它基本上从tblMain执行SELECT*并将更改的行插入到tblHistory中.tblHistory是tblMain的副本(只有更高),并且它有一个唯一id的额外字段.我最近添加了一个TimeStamp类型的字段(我现在理解它已被弃用,但稍后我会处理),以避免Microsoft Access 2007中的写冲突问题.
显然,触发器将tblMain中的每个字段复制到tblHistory.它正在做一个Select*.但是,如果我在历史表中放置一个timeStamp类型的字段来接收来自tblMain的字段,显然触发器将会失败.我应该在历史表中使用什么类型来接受TimeStamp源?
来自文档:
不可空的时间戳列在语义上等同于二进制(8)列.可空的时间戳列在语义上等同于varbinary(8)列.
这有效:
-- //Main table, with TIMESTAMP column
CREATE TABLE Main ( id INT, TIMESTAMP )
-- //Some values
INSERT Main VALUES ( 8, DEFAULT )
INSERT Main VALUES ( 4, DEFAULT )
INSERT Main VALUES ( 2, DEFAULT )
INSERT Main VALUES ( 7, DEFAULT )
INSERT Main VALUES ( 0, DEFAULT )
-- //See the values
SELECT * FROM Main
-- //History table
-- //with VARBINARY(8) to store a nullable TIMESTAMP
CREATE TABLE History (id INT, ts VARBINARY(8))
-- //Populate History table
INSERT History
SELECT * FROM Main
-- //See the values
SELECT * FROM History
Run Code Online (Sandbox Code Playgroud)