Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como definir uma chave primária de incremento automático no SQL Server


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.