指定哪些列不要将值插入mysql表中

时间:2009-12-25 17:43:30

标签: sql mysql stored-procedures insert mysql-error-1264

我有一个存储过程,它将一行插入带有自动增量列的表中。 它给了我一个警告,但如果我只是为自动增量列的值加上“”就会成功。我当前摆脱错误的方法是指定插入值用于哪些列...“插入到app_table(app_id,name,...)值(...)”但是自动增量列是唯一的那是没有插入的。有更清洁的方法吗?比如指定哪些列不要将值插入?

3 个答案:

答案 0 :(得分: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)

使用""代替NULL auto_increment列,警告将消失。 auto_increment值将正确递增。无需列出insert语句中的所有列(尽管许多人认为这是一个好习惯)。

答案 1 :(得分:1)

如果您不想为所有列提供值,则应指定要插入的列。

除了*之外没有其他快捷方式。

答案 2 :(得分:0)

除了id(以及你想要保留的任何其他字段的默认值或null)之外,如何填充除了填充每个列之外的更简洁的方法呢?当你这样做时,你只是忽略了自动生成的信息,因此它需要的参数少于任何其他方式,这似乎是最干净的方式。