Definir chave primaria MYSQL para campo já existente

Olá, como faço para definir um campo já existente como chave primária no MySQL? Por exemplo tinha esquecido de criar o campo “id”, e criei depois, agora preciso defini-lo como primary key.

ALTER TABLE sua_tabela ADD PRIMARY KEY(coluna);

1 curtida

1 - Altere o tipo:

ALTER TABLE nome_tabela
MODIFY COLUMN id INT NOT NULL AUTO_INCREMENT;

2 - Defina como PK:

ALTER TABLE nome_tabela
ADD PRIMARY KEY(id);

ou assim:

ALTER TABLE nome_tabela
ADD CONSTRAINT pk_nome_tabela PRIMARY KEY(id);

Obs.: o primeiro passo não sei se é realmente necessário.

1 curtida

Apareceu esse erro:
17:14:50 alter table venda_query add primary key (id) Error Code: 1138. Invalid use of NULL value 0,200 sec

Como você fez a alteração, ou seja, qual comando usou/como usou? Como está o campo id?

Já resolvi, mas tive que excluir o campo id:

alter table venda_query
drop column id

alter table venda_query add column id int primary key auto_increment

@Iohannes mas mesmo assim não resolvi do jeito que queria.
Então meu campo id está setado como int(11) só

Você não seguiu nenhuma dos comandos passados…