2016-02-10 164 views
1

我想更新一個空表,其具有類型時間戳到VARBINARY柱(8)ALTER COLUMN

我用下面的命令

ALTER TABLE Notification ALTER COLUMN RowRevisionID varbinary(8) 

,我得到和誤差

無法更改列'RowRevisionID',因爲它是'時間戳'。

如何更改時間戳列的類型?

我不希望刪除列的添加一個新的,因爲這會造成在最後一列,我希望保留列的順序使用此表的INSERT INTO

+0

[更新TIMESTAMP列可能爲空]的可能副本(http://stackoverflow.com/questions/24767446/update-a-timestamp-column-to-be-nullable) –

+0

@JamesZ,我想保留列順序,因爲該表將在INSERT INTO語句中使用,如果我刪除列並添加一個新列,則會在表的末尾添加新列。 –

回答

4

您可惜不能如錯誤所示,對時間戳列進行更改;你堅持你擁有的東西。另外,每個表只能有一個時間戳列,所以不能在任何解決方案中複製列。

您最好的選擇(取決於表的大小)可能是將數據複製到臨時表(使用SELECT * INTO MyTempTable FROM OriginalTable語法來保留時間戳值),然後刪除並重新創建具有所需列的原始表所需的順序並重新插入數據,或者您可以將新的VARBINARY(8)列添加到現有表中並刪除時間戳列,以保留原始表。可能還有其他的解決方案,但都需要一個新的列,而不是一個ALTER COLUMN腳本。

相關問題