Problema:
Você deseja criar uma chave primária para uma tabela em um banco de dados.
Exemplo:
Queremos uma chave primária para uma tabela chamada
product
. Solução 1 (nova tabela):
CREATE TABLE product ( id INT PRIMARY KEY, name VARCHAR(100) NOT NULL, producer VARCHAR(100) NOT NULL, price DECIMAL(7,2) );
Discussão:
Para criar uma nova tabela com uma coluna definida como chave primária, você pode usar a palavra-chave
PRIMARY KEY
no final da definição dessa coluna. Em nosso exemplo, criamos a tabela product
usando um CREATE TABLE
cláusula, com os nomes das colunas e seus respectivos tipos de dados entre parênteses. Escolhemos o id da coluna como a chave primária desta tabela, então designamos PRIMARY KEY
no final da definição desta coluna. Lembre-se de que você pode criar apenas uma chave primária para uma determinada tabela.
Solução 2 (nova tabela):
CREATE TABLE product ( name VARCHAR(100) NOT NULL, producer VARCHAR(100) NOT NULL), price DECIMAL(7,2), PRIMARY KEY(name, producer) );
Discussão:
Outra maneira de definir uma chave primária durante a criação de uma nova tabela é com uma
PRIMARY KEY
cláusula no final das definições de coluna. Neste caso, designamos uma ou mais colunas como um argumento para a PRIMARY KEY
cláusula; essas colunas se tornam a chave primária da tabela. Observe que essa abordagem permite que as chaves primárias sejam criadas com várias colunas. Neste exemplo, a chave primária da tabela
product
é formado por duas colunas:name
e producer
. Solução 3 (tabela existente):
ALTER TABLE product ADD PRIMARY KEY (id);
Discussão:
Também é possível definir uma chave primária para uma tabela existente que ainda não possui uma chave primária.
Aqui, a tabela é alterada usando um
ALTER TABLE
cláusula. A tabela (em nosso exemplo, product
) é nomeado após a palavra-chave ALTER TABLE
, então a ADD PRIMARY KEY
cláusula segue com o nome da coluna a ser usada como chave primária. Observe que a tabela já deve existir antes que este comando seja executado e a tabela ainda não deve ter uma chave primária. Solução 4 (tabela existente, restrição de chave primária):
ALTER TABLE product ADD CONSTRAINT PK_product_id PRIMARY KEY (id);
Discussão:
Use uma consulta como esta se quiser nomear uma restrição de chave primária para uma tabela existente. Aqui, a restrição de chave primária,
PK_product_id
, é gerado a partir da coluna id
. Se você não especificar o nome da restrição, o banco de dados gerará um nome de restrição padrão (o nome variará de acordo com o banco de dados).