我開始使用數據庫項目並在簡單的任務中掙扎。如果我想添加一個新列,它是NOT NULL
,如果表中已經有數據,我該如何使它工作?如何添加NOT NULL列?
我以前寫差異的腳本,在這樣我會寫類似的情況:
-- ... ADD COLUMN X ...
-- insert data into x
-- ... ALTER COLUMN X NOT NULL
我怎麼會需要處理這樣的情況下與數據庫項目?
THX任何的竅門 sl3dg3
我開始使用數據庫項目並在簡單的任務中掙扎。如果我想添加一個新列,它是NOT NULL
,如果表中已經有數據,我該如何使它工作?如何添加NOT NULL列?
我以前寫差異的腳本,在這樣我會寫類似的情況:
-- ... ADD COLUMN X ...
-- insert data into x
-- ... ALTER COLUMN X NOT NULL
我怎麼會需要處理這樣的情況下與數據庫項目?
THX任何的竅門 sl3dg3
我終於找到了兩種可能的方法。簡而言之:
或者
這裏找到:http://social.msdn.microsoft.com/Forums/en-US/vstsdb/thread/49bf2a88-d80d-4a9f-970e-728bd530332e/
兩者意味着額外的工作,我希望從這種常見情況的框架更多的支持。但至少可以這樣做。
您可以通過在創建列提供了一些默認值添加NOT NULL列。
你的意思是默認約束?然後用它做什麼,在第二步中刪除它?我一般不會使用默認值,因爲我認爲它們是邪惡的。編寫適當的默認值由應用程序決定。 – sl3dg3 2012-07-27 08:02:31
您也可以從發佈數據庫對話框中,而不是爲該列指定DEFAULT值;進入高級 - >高級部署選項並選中「生成智能默認值」框。
來自VS中的描述: 生成智能默認值:當更新包含不允許空值的列的數據的表時,自動提供默認值。
如果目標表被其他許多表引用,該怎麼辦?刪除數據將頭痛!因爲您必須先遷移所有相關表數據,或者在從第一個表中刪除數據之前取消其他表的外鍵約束。 – 2013-02-23 09:10:15