2012-12-19 42 views
2

我有一張需要從「null」更改爲「not null」的表。如何將sql中的「null」修改爲「not null」

我有一個表結構如下:

Created_By Created_Date_Time Modified_By Modified_Date_Time 
NULL   NULL    -1     NULL 
NULL   NULL    -1     NULL 
NULL   NULL    -1     NULL 

我需要從-1改變Modified_Bynull

我想用下面的查詢,但它給了我一個錯誤:

update BOM_Rules 
set Modified_By = not null 

錯誤:

Cannot insert the value NULL into column 'Modified_By', table 'dbo.BOM_Rules'; column does not allow nulls. UPDATE fails. 

我相信我缺少一些重要的東西。也許alter table

ALTER TABLE BOM_Rules 
ALTER COLUMN Modified_By NVARCHAR(50) NOT NULL 

我正在使用SQL2008R2。

+2

沒有「NOT NULL」值。該術語僅用於DDL和WHERE條款。你必須真正設置一個值,如果你想要的東西*不爲空* – Phil

+2

'set Modified_By = not null'應該給你錯誤'不正確的語法靠近關鍵字'not''。因爲這不是有效的語法'。不是關於插入NULL的錯誤 –

+3

你的問題是不一致的。你說你需要將'from null'改爲'not null'',但是你說'Modified_By'字段包含'-1',並且你想要將它改爲null。那麼,這是什麼? – voithos

回答

6

聽起來像Modified_By列不允許空值。嘗試更改列以允許空值:

ALTER TABLE BOM_Rules 
ALTER COLUMN Modified_By NVARCHAR(50) NULL 
+0

這個問題的解釋對我最有意義。我認爲他們必須一直運行'更新BOM_Rules設置Modified_By = null',而不是他們在問題中說的查詢。 –