Есть ли способ не указывать NULL или перечислять все значения при работе с auto_increment - PullRequest
0 голосов
/ 30 мая 2018

Привет, ребята, у меня есть следующая таблица

CREATE TABLE test(
  cod int(3) auto_increment,
  text varchar(10),
  PRIMARY KEY(cod));

Я хотел бы знать, как можно, если есть способ вставить в это как

INSERT INTO test VALUES ('test');

и получить это

+-----+------+
| cod | text |
+-----+------+
|   1 | test |
+-----+------+

просто полностью игнорируя столбец cod, так как он auto_incrementing, я знаю, что вы можете объявить, какие значения вы планируете вставить, или просто передать значение null, но я хотел бы знать, есть ли какой-то путь помимо этих двухпути

1 Ответ

0 голосов
/ 30 мая 2018

Укажите список столбцов в операторе INSERT ...

INSERT INTO test (text) VALUES ('test')
                 ^^^^^^

Любым столбцам, опущенным в списке столбцов, будет присвоено значение по умолчанию.В случае столбца без назначенного значения по умолчанию используется значение NULL.Это будет эквивалентно

INSERT INTO test (text, cod) VALUES ('test', NULL)
                      ^^^^^                ^^^^^^

Обратите внимание, что первое значение в списке значений идет в первый столбец в списке столбцов, второе значение во второй столбец и т. Д.

Еслисписок столбцов опущен, тогда список столбцов по умолчанию равен all столбцов, определенных в таблице, в том же порядке, в котором они определены в таблице.Таким образом, мы могли бы также написать:

INSERT INTO test (cod, text) VALUES (NULL, 'test')

Так что это только особый случай, когда мы поставляем значения для для каждого столбца, а значения поставляются в в том же порядке поскольку столбцы определены в таблице, где мы можем опустить список столбцов.

Рекомендуется всегда указывать список столбцов, а не полагаться на порядок столбцов в таблице.Это поможет будущему читателю выяснить, какие значения присваиваются каким столбцам, без необходимости искать определение таблицы.Это также предотвращает «разрыв» оператора INSERT при добавлении нового столбца в таблицу или при переупорядочении столбцов.

...