2

我有一个存储过程,可以将一行插入具有自动递增列的表中。它给了我一个警告,但如果我简单地将“”作为自动增量列的值,它就会成功。我目前摆脱错误的方法是指定插入值用于哪些列...“插入app_table(app_id,name,...)值(...)”但自动增量列是唯一的没有插入。有没有更清洁的方法来做到这一点?就像指定不向哪些列插入值一样?

4

3 回答 3

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语句中的所有列(尽管许多人认为这是一种很好的做法)。

于 2009-12-25T17:55:54.723 回答
1

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

没有捷径,除了*.

于 2009-12-25T17:49:42.630 回答
0

除了填充除 id 之外的每一列(以及您希望保留默认值或 null 的任何其他字段)之外,还有比填充每一列更清洁的方法吗?当您这样做时,您只需省略自动生成的信息,因此它需要的参数比任何其他方式都少,这似乎是最干净的方式。

于 2009-12-25T17:53:13.630 回答