Подтвердить что ты не робот

В чем разница между SERIAL и AUTO_INCREMENT в mysql

Я сталкивался с двумя способами, чтобы автоматически увеличивать идентификаторы в mysql.

Один SERIAL, а другой AUTOINCREMENT.

Итак, предположим, что хочу создать таблицу подруг. Я могу создать его двумя способами, например:

1)

mysql> create table myfriends(id int primary key auto_increment,frnd_name varchar(50) not null);

2)

mysql> create table myfriends(id serial primary key,frnd_name varchar(50) not null);

В чем разница между двумя?

ИЛИ

У кого-нибудь есть преимущества перед другими?

Пожалуйста, помогите.

4b9b3361

Ответ 1

В соответствии с docs

SERIAL - это псевдоним для BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.

Итак, будьте осторожны при создании ссылки на SERIAL PK, так как этот ссылочный столбец должен быть такого точного типа.

Ответ 2

AUTO_INCREMENT - это атрибут определенного столбца любого числового типа (int или float), как подписанный, так и unsigned. Когда строки вставлены, он автоматически назначает последовательные номера, поэтому вам не нужно (например, используя LAST_INSERT_ID()). См. http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

SERIAL - это псевдоним, который сочетает в себе тип столбца (BIGINT в частности), AUTO_INCREMENT, UNSIGNED и другие атрибуты для определенного столбца (см. цитату из документов ниже). См. http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html

SERIAL - это псевдоним для BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.

SERIAL DEFAULT VALUE в определении целочисленного столбца является псевдонимом для NOT NULL AUTO_INCREMENT UNIQUE.

Ответ 3

От mysql doc

SERIAL - это псевдоним для BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.

SERIAL DEFAULT VALUE в определении целочисленного столбца является псевдоним для NOT NULL AUTO_INCREMENT UNIQUE.

Если для столбца AUTO_INCREMENT не указано значение, MySQL автоматически назначает порядковые номера. Вы также можете явно назначить NULL или 0 столбцу для генерации порядковых номеров. MySQL не автоматически уменьшает значение автоинкремента при удалении строки. Причины:

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