Em um código como o seguinte, qual é a necessidade de escrever constraint pk_dept primary key (deptno)
se simplesmente primary key (deptno)
funciona? É pk_dept
algo que o banco de dados usa internamente, já que não parece ser uma parte visível da tabela?
create table dept
(deptno decimal(2,0),
dname varchar(14),
loc varchar(13),
constraint pk_dept primary key (deptno));
Uma chave primária é um objeto que reside nos metadados do banco de dados. Terá um nome, não importa como seja criado. A questão é se ele terá um nome significativo que corresponda aos seus padrões de codificação e que sua equipe possa entender rapidamente ou terá um nome sem sentido gerado pelo sistema e todos terão que procurar continuamente?
O RDBMS não se importa com qual sequência de caracteres constitui o nome do objeto. É um computador; todas as strings são igualmente significativas/menos.
Para exagerar ao extremo, você poderia ter todas as suas tabelas chamadas
T1
,T2
,T3
etc e colunasC1
,C2
,C3
. O aplicativo funcionaria , o DBMS não se importaria, mas cara, seria difícil de manter!Você pode ter problemas com a replicação de objetos sem nome. Os sistemas de origem e destino conhecem os objetos por nomes diferentes internamente e a replicação fica confusa ao tentar mapear a origem para o destino.
Existem muitas maneiras diferentes de definir uma chave primária e acho que existe para corresponder ao SQL padrão. Abaixo estão 3 maneiras diferentes de criar uma chave primária:
e
pk_dept
é o nome do índice. Você pode usá-lo para descartar ou modificar o índice. como Micheal Green mencionou, ele existe para facilitar sua vida. Você pode dar um nome a ele ou deixar que o sistema o nomeie para você.