Mysql — вставка в таблицу только с автоинкрементным столбцом

#mysql

#mysql

Вопрос:

Допустим, у нас есть таблица A только с одним столбцом id (который является первичным ключом)

Как нам вставить новую строку в таблицу без указания идентификатора?

Я попробовал это

 INSERT INTO A (`id`) VALUES (NULL)
  

и это не работает

Редактировать: Я забыл упомянуть, что идентификатор первичного ключа имеет атрибут auto_increment, а НЕ NOT NULL.

Правка 2: Точная ошибка при выполнении приведенного выше запроса

 Column 'id' cannot be null
  

Комментарии:

1. Почему бы не поделиться с нами, как именно это не работает?

2. Поле PK не допускает повторяющихся значений или нулевых значений

3. Поля первичного ключа не должны быть нулевыми.

4. @arvinsim — Ваше описание настройки выглядит правильным. Вероятно, вам не удалось выполнить некоторые из шагов, которые, как вы утверждаете, вы выполнили.

5. можете ли вы опубликовать определение вашей таблицы, пожалуйста 🙂

Ответ №1:

Как только ‘id’ в качестве параметра автоматического увеличения включен (при условии, что ID является целым числом), вы можете просто сделать:

 INSERT INTO A (id) values (null)
  

и ‘id’ будет продолжать увеличиваться каждый раз.

Комментарии:

1. Я не думаю, что это работает. Я попробовал это, и он попытался вставить цифру 0. Поскольку я пытался вставить 5 раз, это приводит к ошибке дублирования ввода.

2. @arvinsim: Должно быть, какая-то проблема с вашей настройкой. MySQL принимает оба NULL и 0 в качестве значений для столбца auto_increment и интерпретирует их как означающие «использовать следующий идентификатор».

3. У меня это сработало с базой данных MySQL. Фактически это увеличивает идентификатор каждый раз.

4. Проблема заключается в том, чтобы получить это число, вздох!!

Ответ №2:

работает, только если вы используете первичный ключ auto_increment (PK), поскольку каждый PK должен иметь уникальное значение, отличное от null.

 drop table if exists A;
create table A
(
id int unsigned not null auto_increment primary key
)
engine=innodb;

insert into A (id) values (null),(null);

mysql> select * from A order by id;
 ---- 
| id |
 ---- 
|  1 |
|  2 |
 ---- 
2 rows in set (0.00 sec)
  

Комментарии:

1. Да, это автоматически увеличивающееся поле

2. Если я чего-то не упускаю, это настройка, описанная в вопросе 😕

Ответ №3:

У меня была похожая проблема, затем я заметил, что я не применил изменения, когда я изменил id на primary key not null auto incremental.

Ответ №4:

 INSERT INTO `table` () VALUES (); 
  

тоже работает.

Ответ №5:

Попробуйте это без `.. Как в:

ВСТАВИТЬ В A (sid) ЗНАЧЕНИЯ (NULL); // я использовал sid вместо id…

у меня все нормально работало..

Также при создании таблицы A укажите unique (sid) … т.е.

создайте таблицу A(sid int(3) not null auto_increment unique(sid));

Комментарии:

1. Стиль цитирования ничего не должен менять