2009-12-25 15 views
2

我有一個存儲過程,它將一行插入帶有自動增量列的表中。 它給了我一個警告,但成功,如果我只是把「」爲自動增量列的值。我現在擺脫錯誤的方式是指定插入值的哪些列......「插入到app_table(app_id,name,...)values(...)」中,但autoincremented列是唯一的列沒有插入。有沒有更乾淨的方法來做到這一點?像指定哪些列不要插入值?指定不向MySQL表中插入值的列

回答

3

你可能會得到這樣的警告:

mysql> show warnings; 
+---------+------+------------------------------------------------------+ 
| Level | Code | Message            | 
+---------+------+------------------------------------------------------+ 
| Warning | 1264 | Out of range value adjusted for column 'id' at row 1 | 
+---------+------+------------------------------------------------------+ 
1 row in set (0.00 sec) 

代替""爲AUTO_INCREMENT列,使用NULL,並警告會自行消失。 auto_increment值將正確遞增。沒有必要列出insert聲明中的所有列(儘管許多人認爲這是一個很好的做法)。

+1

謝謝。完美的答案! – 2009-12-25 18:05:06

1

如果您不想爲所有列提供值,則應指定要插入的列。

*之外沒有捷徑。

0

怎麼可能有一個更清潔的方式來做到這一點比填充每個列除id(和任何其他字段,你想離開默認或空)?當你這樣做時,你只需要省去自動生成的信息,因此與其他任何方式相比,它所需的參數更少,這似乎是最乾淨的方式。