2011-07-25 55 views
-4

我想添加或更新使用alter table的列,如果我要添加一個新列我想要顯示錯誤。我使用下面如何在SQL Server 2008中的表格之間插入列

alter table Personal_Details alter columns DOB datetime 

的代碼,如果我取消空不空,然後它會顯示列不允許空值;更新失敗;

我想插入列之間的字段不是結束。

Plese修復我的bug,

在此先感謝。

+1

您是否正在嘗試ALTER或ADD列?你是否正在對現場數據庫做這件事? – BonyT

+0

你的更新陳述不知道你在做什麼...... 你可以粘貼你的表的創建代碼以及 – Mulki

+0

你是什麼意思插入字段之間的列?當然,你如何在表格定義中出現字段對你來說沒有任何意義? – BonyT

回答

3

列聲明中列的位置與NULL或NOT NULL無關。

如果要添加你想成爲NOT NULL(任何類型)的列,即要在該列禁止NULL值,表已經包含了一些行,你必須還提供一些默認值。例如:

ALTER TABLE Personal_Details 
ADD COLUMN DOB datetime NOT NULL DEFAULT (GETDATE()) 

否則發動機將嘗試添加該列與空值作爲其值,這將違反NOT NULL屬性和變化,因此,將被還原。

基本上,當列想要在列已包含NULL時設置現有的列的NOT NULL屬性時,情況基本相同。但在這種情況下,您必須通過用值替換或刪除相應的行來顯式消除更改前的NULL。

來源:

0

1)烏拉圭回合與不爲空的問題將列

使用

ALTER TABLE Personal_Details ADD COLUMN DOB datetime NULL 

更新DOB列與所需的日期並確保列 中沒有空值,然後改變列使用

ALTER TABLE Personal_Details ALTER COLUMN DOB datetime not NULL 

2)對於你的列到最後的問題......

  1. 你不應該擔心......列的排列順序並不重要......除非你用可憐的方式訪問數據按列順序..在這種情況下.....應該停止訪問它按列順序...
  2. 如果列順序真的很重要,你可以使用設計選項在sql管理表中更改它(右鍵單擊表>設計並拖動列到它所需的位置。)
相關問題