Como eu auto increment
o primary key
em uma SQL Server
tabela de banco de dados, eu tive um olhar através do fórum, mas não pode ver como.
Procurei nas propriedades, mas não consigo ver uma opção. Vi uma resposta em que você acessa a Identity
propriedade de especificação, define-a como sim e define-a Identity increment
como 1, mas essa seção fica acinzentada e não posso alterar o não ao sim.
Deve haver uma maneira simples de fazer isso, mas não consigo encontrá-lo.
sql-server
sql-server-2012
identity
Ledgemonkey
fonte
fonte
Respostas:
Verifique se o tipo de dados da coluna Key é
int
e, em seguida, defina a identidade manualmente, como mostra a imagemOu apenas execute este código
o código será executado, se
ID
não for a única coluna na tabelareferência de imagem fifo's
fonte
IDENTITY
propriedade pode ser aplicada a qualquer tipo de dados numéricos (assim que poderia sertinyint
,smallint
,int
,bigint
,numeric
,decimal
), a única restrição é que ele não poderia representar número fracionário (por isso não pode serfloat
, oureal
, nemnumeric
oudecimal
com escala diferente de zero ) e ofc, a especificação de identidade deve ser compatível com o tipo de dados selecionado.Ao criar a tabela, você pode criar uma
IDENTITY
coluna da seguinte maneira:A
IDENTITY
propriedade incrementará automaticamente a coluna a partir do número 1. (Observe que o tipo de dados da coluna precisa ser um número inteiro.) Se você deseja adicionar isso a uma coluna existente, use umALTER TABLE
comando.Edit:
Testado um pouco, e não consigo encontrar uma maneira de alterar as propriedades de identidade através da janela Propriedades da coluna para várias tabelas. Eu acho que se você quiser transformar uma coluna em uma coluna de identidade, é necessário usar um
ALTER TABLE
comando.fonte
Você precisa expandir a seção Identidade para expor incremento e semente.
Edit: Eu assumi que você teria um tipo de dados inteiro, não char (10). O que é razoável, eu diria e válido quando publiquei esta resposta
fonte
yes
é acinzentado, pois échar(10)
(de comentário só postou)BookID int primary key identity
, não especifiquei a semente e o incremento, isso é uma boa prática? causa eu vejo a documentação no MSDN Se nenhum for especificado, o padrão é (1,1).Expanda seu banco de dados, expanda sua tabela, clique com o botão direito na sua tabela e selecione o design no menu suspenso.
Agora vá propriedades da coluna abaixo dele role para baixo e encontrar Identidade Specification , expandi-lo e você vai encontrar é a identidade torná-lo Sim. Agora escolha Incremento de identidade logo abaixo e forneça o valor que você deseja incrementar.
fonte
Talvez esteja faltando alguma coisa, mas por que isso não funciona com o objeto SEQUENCE? Não é isso que você está procurando?
Exemplo:
Ao referenciar o squence em um comando INSERT, basta usar:
Mais informações e opções para SEQUENCE
fonte
IDENTITY
às vezes salta deixando lacunas, então volta a preencher essas lacunas novamente. PortantoIDENTITY
, não garante SEMPRE a condiçãoAo usar o Tipo de dados: int, você pode selecionar a linha na qual deseja aumentar automaticamente e ir para a tag de propriedades da coluna. Lá você pode definir a identidade como 'yes'. O valor inicial do incremento automático também pode ser editado lá. Espero poder ajudar;)
fonte
Eu tive esse problema em que eu já havia criado a tabela e não podia alterá-la sem soltar a tabela, então o que fiz foi: (Não tenho certeza de quando eles implementaram isso, mas o fizeram no SQL 2016)
Clique com o botão direito do mouse na tabela no Pesquisador de Objetos:
Script Table as > DROP And CREATE To > New Query Editor Window
Em seguida, faça a edição do script dito por Josien; role até a parte inferior onde
CREATE TABLE
está, localize sua Chave Primária e anexeIDENTITY(1,1)
ao final antes da vírgula. Execute o script.O script DROP and CREATE também foi útil para mim por causa desse problema. (Com o qual o script gerado lida.)
fonte
Tenha cuidado como se você deseja que os elementos de identificação sejam contíguos ou não. Como o SQLSERVER ID pode aumentar em 1000.
Exemplo: antes de reiniciar o ID = 11 após o reinício, insira uma nova linha na tabela e o ID será 1012.
fonte
Você pode usar a palavra-chave
IDENTITY
como o tipo de dados da coluna junto com aPRIMARY KEY
restrição ao criar a tabela.ex:
Aqui o primeiro '1' significa o valor inicial e o segundo '1' é o valor incremental.
fonte
O MS SQL Server usa a palavra-chave IDENTITY para executar um recurso de incremento automático.
No exemplo acima, o valor inicial para IDENTITY é 1 e será incrementado em 1 para cada novo registro.
Dica: Para especificar que a coluna "Personid" comece no valor 10 e aumente em 5, altere-a para IDENTITY (10,5).
Para inserir um novo registro na tabela "Pessoas", NÃO precisaremos especificar um valor para a coluna "Pessoa" (um valor exclusivo será adicionado automaticamente):
fonte
Se a tabela já estiver preenchida, não é possível alterar uma coluna para a coluna IDENTITY ou convertê-la para a coluna não IDENTITY. Você precisaria exportar todos os dados para poder alterar o tipo de coluna para IDENTITY ou vice-versa e depois importar os dados novamente. Eu sei que é um processo doloroso, mas acredito que não há alternativa, exceto pelo uso da sequência, como mencionado neste post.
fonte
ALTER TABLE ... SWITCH
apenas para alternar os metadados sem precisar tocar nos dados. Por exemplo, veja como definir o incremento automático após criar uma tabela sem perda de dados?