Qual é a diferença entre o incremento SERIAL e automático no mysql

Encontrei duas formas de aumentar as identificações no mysql automaticamente.

Um é SERIAL e outro é AUTOINCREMENT .

Então suponha que quero criar uma mesa para os meus amigos. Posso criá-lo de duas maneiras:

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);
Qual é a diferença entre os dois ?

ou

Alguém tem vantagens em relação aos outros ?

Por Favor, Ajudem-Me.

 34
Author: Adon Smith, 2013-11-16

3 answers

De acordo com os documentos

A série é um nome falso para o BIGINT não assinado AUTO_INCREMENT único.

Por isso, tenha cuidado ao criar uma referência a um PK SERIAL, uma vez que essa coluna de referência tem de ser deste tipo EXACTO.

 41
Author: Filipe Silva, 2013-11-16 18:31:29

AUTO_INCREMENT is an attribute of a specific column of any numeric type (int or float), both signed and unsigned. Quando as linhas são inseridas ele atribui automaticamente números sequenciais, para que você não tenha que (por exemplo, usando LAST_INSERT_ID()). Ver http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

SERIAL is an alias that combines column type casting (BIGINT specifically), AUTO_INCREMENT, UNSIGNED e outros atributos para a coluna específica (ver citação dos documentos infra). Ver http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html

SERIAL é um nome falso para BIGINT não assinado AUTO_INCREMENT único.

O valor por omissão da série na definição de uma coluna inteira é um nome alternativo para não NULL AUTO_INCREMENT UNIQUE.

 10
Author: zamnuts, 2013-11-16 18:35:03

De mysql doc

A série é um nome falso para o BIGINT não assinado AUTO_INCREMENT único.

O valor por omissão da série na definição de uma coluna inteira é um nome alternativo para não NULL AUTO_INCREMENT UNIQUE.

Se não for indicado nenhum valor para a coluna AUTO_INCREMENT, os números de sequência atribuídos ao MySQL são automaticamente atribuídos. Você também pode atribuir explicitamente NULL ou 0 para a coluna para gerar números de sequência. O MySQL não diminui automaticamente o valor de autoincrement quando apagar uma linha. As razões são:

    Perigo de ruptura da integridade dos dados (imagine que vários utilizadores executam apaga ou insere...podem ocorrer entradas dobradas ou piores)
  • podem ocorrer erros quando se utiliza a replicação do escravo mestre ou operações
 0
Author: Damodaran, 2013-11-16 18:33:21