我有一個表,其中ntext
列定義爲[value1] [ntext] NOT NULL
。我想向此表添加另一個ntext
列,該表基本上是此列值的副本(它們不需要保持同步)。要做到這一點,我使用的SQL語句:如何將ntext列的值複製到新的非空列
ALTER TABLE [table] ADD [value2] [ntext] NULL
UPDATE [table] SET [value2] = [value1]
ALTER TABLE [table] ALTER COLUMN [value2] [ntext] NOT NULL
這適用SQL Server 2005和2008年在罰款,但我需要它也是在SQL Server 2000中工作,根據BOL,ALTER TABLE
不能使用上SQL Server 2000中的ntext
列。最終的alter table是必需的,因爲該列必須定義爲NOT NULL
。
有沒有什麼辦法可以在SQL Server 2000中實現這一點,而不必創建一個新表,將所有行復制,刪除舊錶,然後重命名新表?該表有很多外鍵和約束條件,我不想去取出並重新創建。
(我知道,NTEXT已被棄用 - 這是一個改變到具有使用它們暫時遺留應用程序的一部分。)
我曾嘗試在創建列時設置默認值,但它工作正常,但我並不樂意讓列的默認值沒有意義。之後我沒有想過去除默認約束 - 很好的解決方法。 – adrianbanks 2010-01-06 12:58:11