SqlServer criar a tabela com o MySQL como chave primária auto_increment
-
01-07-2019 - |
Pergunta
Eu quero fazer uma tabela em SqlServer que vai acrescentar, na inserção, um auto incrementado chave primária. Este deve ser um id autoincremented semelhante à funcionalidade auto_increment MySql. (Abaixo)
create table foo
(
user_id int not null auto_increment,
name varchar(50)
)
Existe uma maneira de fazer isso com a criação de um disparador de inserção?
Solução
Como este
create table foo
(
user_id int not null identity,
name varchar(50)
)
Outras dicas
OP pediu uma auto incrementado chave primária. A palavra-chave identidade não, por si só, fazer uma coluna de ser a chave primária.
CREATE TABLE user
(
TheKey int IDENTITY(1,1) PRIMARY KEY,
Name varchar(50)
)
Eles têm respondido à sua pergunta, mas eu quero adicionar um pouco de conselho para alguém novo para usando colunas de identidade. Há momentos em que você tem que devolver o valor da identidade acabou de inserir de modo que você pode inserir em uma tabela relacionada. Muitas fontes irá dizer-lhe para usar @@ identidade para obter este valor. Sob nenhuma circunstância você deve sempre usar @@ identidade se você quiser mantain integridade dos dados. Ele lhe dará a identidade criada em um gatilho, se um deles é adicionado a inserção para outra mesa. Desde que você não pode garantir o valor de @@ identidade será sempre correto, o melhor é nunca use @@ identidade. Use SCOPE_IDENTITY () para obter este valor em seu lugar. Eu sei que isto é um pouco fora do tópico, mas é importante para a sua compreensão de como usar a identidade com o SQL Server. E confiem em mim, você não quer ser a fixação de um problema dos registros relacionados com o valor de identidade errada alimentado a eles. Isso é algo que pode tranquilamente dar errado durante meses antes de ser dicovered e é quase impossível de corrigir os dados depois.
Como já foi mencionado:. Adicionar o atributo IDENTITY para a coluna, e torná-lo uma chave primária
Há, no entanto, as diferenças entre a identidade de MSSQL e AUTO_INCREMENT do MySQL:
- MySQL exige que um único
restrição (frequentemente sob a forma de um
chave primária) ser definida para o
não AUTO_INCREMENT coluna.
MSSQL não tem esse requisito. - MySQL permite que você manualmente inserir valores em uma coluna AUTO_INCREMENT.
MSSQL impede que você inserir manualmente um valor em uma identidade coluna; se necessário, você pode substituir isso emitindo um "SET IDENTITY_INSERT nome da tabela ON" comando antes da inserção. - MySQL permite que você atualizar valores em uma coluna AUTO_INCREMENT.
MSSQL se recusa a atualizar valores em uma IDENTIDADE coluna.
Apenas defina o campo como um campo de identidade .
declarar o campo para ser identidade
Como recomendado acima, use um campo de identidade.
CREATE TABLE foo
(
user_id int IDENTITY(1,1) NOT NULL,
name varchar(50)
)
Como já foi dito, basta configurar a opção de Identidade.