2009-12-25 34 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(和任何其他字段,你想离开默认或空)?当你这样做时,你只需要省去自动生成的信息,因此与其他任何方式相比,它所需的参数更少,这似乎是最干净的方式。