Heidisql: AUTO_INCREMENT não funciona no servidor MSSQL

Criado em 30 out. 2018  ·  5Comentários  ·  Fonte: HeidiSQL/HeidiSQL

Etapas para reproduzir este problema

  1. Crie uma tabela em um servidor SQL;
  2. Adicione uma coluna de ID;
  3. Defina a coluna ID para ser incrementada automaticamente definindo o padrão como AUTO_INCREMENT;
  4. Salve a mesa. Isso pode resultar na criação ou atualização da tabela. Isso falha.

Comportamento atual

Ele não cria ou modifica a tabela.
Dá um erro na parte AUTO_INCREMENT da instrução.

Comportamento esperado

Ele deve criar ou atualizar a tabela.
Não deve dar erro.

Solução possível

Em vez de usar AUTO_INCREMENT, o SQL Server requer IDENTITY(1,1).
O primeiro número entre colchetes é o valor inicial, o segundo é o incremento.
Exemplo:
CRIAR TABELA Pessoas (
ID int IDENTIDADE(1,1) CHAVE PRIMÁRIA,
Nome varchar(255) NOT NULL
);

Ambiente

  • Versão HeidiSQL:
    9.5.0.5315, última compilação noturna. Na verdade, não quero usar uma compilação noturna, mas uma compilação estável.
  • Sistema de banco de dados e versão:
    Servidor SQL, todas as versões.
  • Sistema operacional:
    Windows 10 no cliente, desconhecido no servidor.

Todos 5 comentários

Esta é uma grande mudança? Seria fácil para um primeiro PR?

Eu tenho o mesmo problema.
Existe uma solução para este problema?

Oh Deus! É 2020 e isso ainda está aberto. Por favor, pessoal, corrijam isso o mais rápido possível.
FYI: Estou usando o HeidiSql v10.3

Também correndo para isso hoje. Uma das únicas razões pelas quais tenho que abrir o SSMS :(

Aqui está um script para gerar uma tabela no MS SQL 12.0.5223.6 que ilustra o problema:

CREATE TABLE [dbo].[User](
    [Username] [nvarchar](20) NOT NULL,
    [FullName] [nvarchar](50) NOT NULL,
    [EmailAddress] [nvarchar](100) NULL,
    [LastLoginDate] [datetime] NULL,
    [IsAdministrator] [bit] NULL,
    [Roles] [int] NOT NULL,
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [CreatedAt] [datetime2](7) NOT NULL,
    [CreatedBy] [nvarchar](20) NOT NULL,
    [ModifiedAt] [datetime2](7) NULL,
    [ModifiedBy] [nvarchar](20) NULL,
    [LastPortfolioId] [int] NULL,
 CONSTRAINT [PK__User__536C85E5B3CDBFE3] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[User] ADD  DEFAULT (getdate()) FOR [CreatedAt]
GO

ALTER TABLE [dbo].[User] ADD  DEFAULT (suser_sname()) FOR [CreatedBy]
GO

HeidiSQL 10.3.0.5838 não detecta a chave primária:
image

Aqui está um script que seleciona índices de chave primária no MS SQL (provavelmente versões não muito antigas do MS SQL):

select schema_name(tab.schema_id) as [schema_name], 
    tab.[name] as table_name, 
    pk.[name] as pk_name,
    col.name as col_name
from 
  sys.tables tab
  left outer join sys.indexes pk on tab.object_id = pk.object_id and pk.is_primary_key = 1
  left join sys.index_columns ic on ic.index_id = pk.index_id and ic.object_id = tab.object_id
  inner join sys.columns col on ic.object_id = col.object_id and ic.column_id = col.column_id
order by schema_name(tab.schema_id),
    tab.[name]
Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

cautionbug picture cautionbug  ·  4Comentários

BraveOtter picture BraveOtter  ·  4Comentários

cammudito picture cammudito  ·  3Comentários

altmvogi picture altmvogi  ·  5Comentários

chrysler5798 picture chrysler5798  ·  5Comentários