указать, какие столбцы не вставлять значения в таблицу MySQL - PullRequest
2 голосов
/ 25 декабря 2009

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

Ответы [ 3 ]

3 голосов
/ 25 декабря 2009

Вы, вероятно, получаете это предупреждение:

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 голос
/ 25 декабря 2009

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

Нет ярлыков, кроме *.

0 голосов
/ 25 декабря 2009

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

...