更改时间戳类型的列

时间:2016-02-10 16:57:01

标签: sql sql-server sql-server-2012

我想更新一个空表,它有一个timebeamp类型的列到varbinary(8)

我使用了以下命令

ALTER TABLE Notification  ALTER COLUMN RowRevisionID varbinary(8) 

我得到了一个错误

  

无法更改列'RowRevisionID',因为它是'timestamp'。

如何更改时间戳列类型?

我不希望删除列添加一个新列,因为这将在末尾创建一个列,并且我希望保留列顺序以在INSERT INTO中使用此表

2 个答案:

答案 0 :(得分:7)

您很遗憾无法更改时间戳列,因为错误意味着;你坚持自己拥有的东西。此外,每个表只能有一个时间戳列,因此您无法在任何解决方案中复制该列。

您最好的选择(取决于表的大小)可能是将数据复制到临时表(使用SELECT * INTO MyTempTable FROM OriginalTable语法来保留时间戳值),然后删除并重新创建具有所需的原始表按所需顺序排列列并重新插入数据,或者可以向现有表添加新的VARBINARY(8)列并删除时间戳列,同时保留原始表。可能有其他解决方案与这些解决方案相同,但所有解决方案都需要一个新列,而不是ALTER COLUMN脚本。

答案 1 :(得分:0)

您正在寻找:

ALTER TABLE Notification DROP RowRevisionID;

ALTER TABLE Notification ADD RowRevisionID varbinary(8) AFTER myOtherColumn;