Sha*_*ler 2 sql sql-server sql-server-2012
我想更新一个空表,它有一个类型为timebin的列到varbinary(8)
我使用了以下命令
ALTER TABLE Notification ALTER COLUMN RowRevisionID varbinary(8)
Run Code Online (Sandbox Code Playgroud)
我得到了一个错误
无法更改列'RowRevisionID',因为它是'timestamp'.
如何更改时间戳列类型?
我不希望删除列添加一个新的,因为这将在最后创建一个列,并且我希望保留列顺序以在INSERT INTO中使用此表
遗憾的是,您无法更改时间戳列,因为错误意味着; 你坚持自己拥有的东西.此外,每个表只能有一个时间戳列,因此您无法在任何解决方案中复制该列.
您最好的选择(取决于表的大小)可能是将数据复制到临时表(使用SELECT * INTO MyTempTable FROM OriginalTable语法来保留时间戳值),然后删除并使用所需顺序重新创建具有所需列的原始表并重新插入数据,或者您可以VARBINARY(8)向现有表添加新列并删除时间戳列,同时保留原始表.可能有其他解决方案与这些解决方案相同,但所有解决方案都需要一个新列,而不是一个ALTER COLUMN脚本.