SQL - Declaração de chave primaria
Olá pessoal, sou aprendiz em banco de dados e queria saber qual q diferença entre criar chaves usando "CONSTRAINT" ou não.
Ex.:
Assim?
CREATE TABLE TB_TESTE(
id_teste INTEGER,
PRIMARY KEY(id_teste),
);
ou
CREATE TABLE TB_TESTE(
id_teste INTEGER,
CONSTRAINT FK_TB_TESTE PRIMARY KEY(id_teste)
);
Ex.:
Assim?
CREATE TABLE TB_TESTE(
id_teste INTEGER,
PRIMARY KEY(id_teste),
);
ou
CREATE TABLE TB_TESTE(
id_teste INTEGER,
CONSTRAINT FK_TB_TESTE PRIMARY KEY(id_teste)
);
Marcelo Torres
Curtidas 0
Melhor post
Luiz Santos
19/10/2016
Bom dia Marcelo.
A forma mais correta é a segunda.
Tem a ver, principalmente, com o nome da sua chave.
Fazendo com o primeiro comando, o banco vai dar o nome "dele" para a chave primária, enquanto no segundo comando você escolhe o nome que "achar melhor" (ou que seja padrão na empresa onde trabalha).
A título de curiosidade, você poderia ter criado assim também:
Mas ai você cai no mesmo problema do primeiro comando (o banco escolhe o nome da sua chave)
Grande abraço
A forma mais correta é a segunda.
Tem a ver, principalmente, com o nome da sua chave.
Fazendo com o primeiro comando, o banco vai dar o nome "dele" para a chave primária, enquanto no segundo comando você escolhe o nome que "achar melhor" (ou que seja padrão na empresa onde trabalha).
A título de curiosidade, você poderia ter criado assim também:
CREATE TABLE TB_TESTE( id_teste INT NOT NULL PRIMARY KEY );
Mas ai você cai no mesmo problema do primeiro comando (o banco escolhe o nome da sua chave)
Grande abraço
GOSTEI 1
Mais Respostas
Marcelo Torres
19/10/2016
Mas no primeiro caso o nome da chave não seria "id_teste"? Ou seja, a chave teria o nome criado na declaração "PRIMATY KEY(id_teste)".
GOSTEI 0
Luiz Santos
19/10/2016
Não.
Você está confundindo o nome da chave com a coluna da chave.
Veja a explicação do comando em partes
CONSTRAINT PK_TB_TESTE PRIMARY KEY (ID_TESTE)
CONSTRAINT = RESTRIÇÃO
PK_TB_TESTE = NOME DA CHAVE. (Poderia chamá-la de "ZÉ", não devemos, óbvio, mas que pode, pode)
PRIMARY KEY = TIPO DA CONSTRAINT / RESTRIÇÃO
(ID_TESTE) = COLUNA EM QUE SERÁ APLICADA A CONSTRAINT / RESTRIÇÃO
Ficou claro?
Grande abs
Você está confundindo o nome da chave com a coluna da chave.
Veja a explicação do comando em partes
CONSTRAINT PK_TB_TESTE PRIMARY KEY (ID_TESTE)
CONSTRAINT = RESTRIÇÃO
PK_TB_TESTE = NOME DA CHAVE. (Poderia chamá-la de "ZÉ", não devemos, óbvio, mas que pode, pode)
PRIMARY KEY = TIPO DA CONSTRAINT / RESTRIÇÃO
(ID_TESTE) = COLUNA EM QUE SERÁ APLICADA A CONSTRAINT / RESTRIÇÃO
Ficou claro?
Grande abs
GOSTEI 1
Marcelo Torres
19/10/2016
Ahh sim. Agora ficou claro. Muito obrigado! ;)
GOSTEI 0