Existe uma opção no sql server para configurar o valor inicial padrão (seed) de uma coluna de identidade em um nível de banco de dados.
Eu quero que, por padrão, toda tabela criada com uma coluna de identidade, o primeiro valor comece em 3000. E não de 1 . Eu sei como fazer isso em um nível de tabela. Mas é possível em um nível de banco de dados?
10x
Não, não é possível em nível de banco de dados.
IDENTITY
não é um tipo de dados, é uma definição de coluna de uma tabela.Gostaria de saber se você pode ter um tipo de dados definido pelo usuário em tabelas que é sempre uma coluna de identidade com as configurações que você deseja. Então você faria os desenvolvedores usarem esse tipo de dados nas tabelas. Eu olhei para este documento, mas não entendi o que é possível, desculpe.
https://learn.microsoft.com/en-us/sql/t-sql/statements/create-type-transact-sql
Depois que as tabelas são criadas, você pode examinar as informações da coluna de identidade de uma tabela por vez usando a operação "DBCC CHECKIDENT".
https://learn.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkident-transact-sql
Para isso, escreveria um script que gerasse o comando "DBCC" como saída de texto para cada tabela que possui uma coluna de identidade. Algo como:
Então você precisa de algo para olhar o resultado e encontrar valores insatisfatórios.
Você pode variar o comando, para substituir e definir o valor usado na coluna de identidade em novas linhas, mas não está impedido de configurá-lo para um valor que já existe em uma linha da tabela, ou seja, produzir uma chave duplicada. Isso pode ser evitado apenas fazendo essa alteração quando a tabela não tiver linhas. Corrigir dados que já foram inseridos sem respeitar sua condição pode precisar ser um exercício separado, de qualquer maneira.
Você pode usar um gatilho DDL para propagar novamente o valor de identidade em todas as tabelas recém-criadas com uma coluna de identidade para iniciar em 3000.