указать, какие столбцы не вставлять значения в таблицу mysql

У меня есть хранимая процедура, которая вставляет строку в таблицу с автоинкрементным столбцом. Это дает мне предупреждение, но преуспевает, если я просто добавляю «» для значения столбца с автоинкрементом. Способ, которым я избавляюсь от ошибки в настоящее время, заключается в том, чтобы указать, для каких столбцов значения вставки... "вставить в значения app_table (app_id, имя,...) (...)", но столбец с автоинкрементом является единственным что не вставляется. Есть ли более чистый способ сделать это? Например, указать, в какие столбцы не вставлять значения?


person Matt Phillips    schedule 25.12.2009    source источник


Ответы (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 (хотя многие считают это хорошей практикой).

person Asaph    schedule 25.12.2009

Если вы не хотите предоставлять значения для всех столбцов, вам следует указать, какие столбцы вы хотите вставить.

Ярлыков нет, кроме *.

person Quassnoi    schedule 25.12.2009

Как может быть более чистый способ сделать это, чем заполнение каждого столбца, кроме идентификатора (и любых других полей, которые вы хотите оставить по умолчанию или пустыми)? Когда вы делаете это таким образом, вы просто пропускаете информацию, которая генерируется автоматически, поэтому она требует меньше параметров, чем любой другой способ сделать это, который кажется самым чистым способом.

person Kaleb Brasee    schedule 25.12.2009