Semelhante ao MySQL, PostgreSQL, Oracle e muitos outros bancos de dados relacionais, o SQL Server é melhor utilizado ao atribuir chaves primárias exclusivas à maioria das tabelas de banco de dados.
As vantagens de usar chaves primárias numéricas e incrementadas automaticamente são inúmeras, mas os benefícios mais impactantes são a velocidade mais rápida ao realizar consultas e a independência de dados ao pesquisar milhares de registros que podem conter dados alterados com frequência em outras partes da tabela. Com um identificador numérico consistente e exclusivo, os aplicativos podem aproveitar essas consultas mais rápidas e confiáveis.
Criação de tabela básica
Uma vez conectado ao seu SQL Server, você normalmente começaria
CREATING
uma nova tabela que contém o campo que você deseja usar como sua chave primária incrementada. Para o nosso exemplo, ficaremos com o testado e comprovado id
campo:CREATE TABLE books (
id INT NOT NULL,
title VARCHAR(100) NOT NULL,
primary_author VARCHAR(100),
);
O problema aqui é que não temos como controlar nosso
id
campo. Quando um novo registro é inserido, não devemos apenas inserir manualmente um valor para id
, mas precisamos realizar uma consulta com antecedência para tentar verificar se id
valor ainda não existe (uma quase impossibilidade ao lidar com muitas conexões simultâneas). Usando restrições de identidade e chave primária
A solução acaba usando duas opções de restrição fornecidas pelo SQL Server.
A primeira é
PRIMARY KEY
, que como o nome sugere, força a coluna especificada a se comportar como um índice completamente exclusivo para a tabela, permitindo pesquisas e consultas rápidas. Enquanto o SQL Server permite apenas uma
PRIMARY KEY
restrição atribuída a uma única tabela, que PRIMARY KEY
pode ser definido para mais de uma coluna. Em um cenário de várias colunas, colunas individuais podem conter valores duplicados e não exclusivos, mas a PRIMARY KEY
restrição garante que cada combinação de valores restritos será de fato único em relação a qualquer outra combinação. A segunda peça do quebra-cabeça é a
IDENTITY
restrição, que informa ao SQL Server para incrementar automaticamente o valor numérico dentro da coluna especificada sempre que um novo registro for INSERTED
. Enquanto IDENTITY
pode aceitar dois argumentos do seed
numérico de onde os valores começarão, bem como o increment
, esses valores normalmente não são especificados com o IDENTITY
restrição e, em vez disso, são deixados como padrões (ambos o padrão é 1
). Com esse novo conhecimento ao nosso alcance, podemos reescrever nosso
CREATE TABLE
anterior declaração adicionando nossas duas novas restrições. CREATE TABLE books (
id INT NOT NULL IDENTITY PRIMARY KEY,
title VARCHAR(100) NOT NULL,
primary_author VARCHAR(100),
);
Isso é tudo o que há para isso. Agora o
id
coluna de nossos books
tabela será incrementada automaticamente a cada INSERT
e o id
campo é garantido para ser um valor exclusivo também.