2012-01-30 38 views
3

表格已滿,其中包含數據。是否可以將字段從[not null]更改爲[null]而不刪除並重新創建它? SQL寫入該表必須被刪除並重新創建。 :)SQL。更改要求重新創建表格

+0

的可能重複[更改列:空不空(http://stackoverflow.com/questions/689746/altering-a-column-null-to-非空) – 2012-01-30 09:34:30

+1

我們在談論哪個數據庫? SQL只是一種查詢語言,它沒有指定你正在使用的數據庫。例子; MySQL,MSSQL,PostgreSQL等。 – Hubro 2012-01-30 09:34:30

+0

你不應該使用可視化設計器 - 它在很多方面都相當有限。學習如何使用T-SQL來表達這些修改,並在您的Mgmt Studio中將它們作爲語句執行 - 實際上,不需要爲此更改刪除表。 – 2012-01-30 10:40:34

回答

5

你可以試試:

alter table YourTable alter column YourColumn int null 

每馬丁史密斯評論,在空性的改變不需要表的副本。在磁盤上,每一行在開始時都有一個nullabiltiy bitmap。我認爲在某些情況下位圖必須調整大小,但顯然它包含了一些對於每列可空或不可空的位。

+1

最後一部分是不正確的。 NULL_BITMAP包含所有列的位,而不管可爲空。 [即使添加一個新的第9,第17等列不需要這個。](http://sqlskills.com/BLOGS/PAUL/post/Misconceptions-around-adding-columns-to-a-table.aspx) – 2012-01-30 09:37:36

+0

@馬丁史密斯:謝謝,確實有誤解。這鏈接到[全文](http://sqlskills.com/BLOGS/PAUL/post/Misconceptions-around-null-bitmap-size.aspx) – Andomar 2012-01-30 09:56:02

+0

我想添加一個有趣的評論。 SQL Server菜單中也有一個選項。只需從Options \ Designer中刪除一個勾號「阻止保存需要表格娛樂的更改」。 – Spirit 2012-01-30 16:02:08

1

您是否嘗試過使用ALTER TABLE XXX ALTER COLUMN YYY YOURTYPE NULL命令?

1

這可能幫助:

ALTER TABLE [Table] ALTER COLUMN [Column] [YourDataType] NULL 
相關問題