2016-01-13 63 views
0

我需要mysql中的語句幫助。 我在MySQL表中的字段名爲代碼定義爲基於整數(7)NOT NULL默認9999999Mysql在db的字段中插入零,默認值爲9999999

我的問題是,當我做這個聲明SQL:

INSERT INTO mytable (Id, Code) VALUES ('123',''); 

我去插入在字段代碼值零(0)。 爲什麼不在字段中插入值9999999 代碼

謝謝。

+0

整數給出的是不是一個字和(7)是(幾乎)無意義 – Strawberry

+0

如果「Id」列的值也是整數,您不需要將值封裝在引號中。 –

回答

0

默認值的默認值僅當沒有提供值。嘗試插入而不提供代碼列值默認值的

INSERT INTO mytable (Id, Code) VALUES ('123'); 
2

因爲您需要插入null而不是空字符串(或者根本不提供任何值,如提到的@Vipin)。

INSERT INTO mytable (Id, Code) 
VALUES ('123', NULL); 

空字符串仍然是一個值,默認值僅在提供NO值時使用。

由於codeint字段,MySQL會嘗試將''轉換爲數字,結果爲0

+0

我已經插入NULL並且結果是相同的,它插入一個值爲零。無論如何,爲什麼用空字符串或NULL插入值ZERO?謝謝。 – Aresof

0

嘗試,直到你習慣了它這

INSERT INTO mytable (Id) VALUES ('123'); 

NULL值可奇怪的。 概念上,NULL表示「缺少一個未知值」,它被視爲 與其他值有所不同。

這就是爲什麼你不能的情況下,插入null

http://dev.mysql.com/doc/refman/5.7/en/working-with-null.html

+0

在第一種情況下,我獲得默認值9999999,在第二種情況下,我獲得值ZERO。 – Aresof

+0

你想要默認值? –

+0

我希望默認值爲NULL或空時。我不知道用戶是否會在表單中插入值。 – Aresof

0

實施例中的特定字段具有低於

GO 
ALTER TABLE Table_name ADD 
    column_name decimal(18, 2) NOT NULL CONSTRAINT Constant_name DEFAULT 0 
GO 
ALTER TABLE Table_name SET (LOCK_ESCALATION = TABLE) 
GO 
COMMIT