Heidisql: AUTO_INCREMENT tidak berfungsi di server MSSQL

Dibuat pada 30 Okt 2018  ·  5Komentar  ·  Sumber: HeidiSQL/HeidiSQL

Langkah-langkah untuk mereproduksi masalah ini

  1. Buat tabel di server SQL;
  2. Tambahkan kolom ID;
  3. Setel kolom ID agar bertambah otomatis dengan menyetel default ke AUTO_INCREMENT;
  4. Simpan tabel. Ini dapat mengakibatkan pembuatan atau pembaruan tabel. Ini gagal.

Perilaku saat ini

Itu tidak membuat atau memodifikasi tabel.
Ini memberikan kesalahan pada bagian AUTO_INCREMENT dari pernyataan.

Perilaku yang diharapkan

Itu harus membuat atau memperbarui tabel.
Seharusnya tidak memberikan kesalahan.

Solusi yang mungkin

Alih-alih menggunakan AUTO_INCREMENT, SQL server memerlukan IDENTITY(1,1).
Angka pertama di antara tanda kurung adalah nilai awal, yang kedua adalah kenaikannya.
Contoh:
BUAT TABEL Orang (
ID int IDENTITAS(1,1) KUNCI UTAMA,
Nama varchar(255) NOT NULL
);

Lingkungan

  • Versi HeidiSQL:
    9.5.0.5315, build malam terbaru. Sebenarnya saya tidak ingin menggunakan nightly build, melainkan stable build.
  • Sistem dan versi basis data:
    SQL server, semua versi.
  • Sistem operasi:
    Windows 10 di klien, tidak dikenal di server.

Semua 5 komentar

Apakah ini perubahan besar? Apakah akan mudah untuk PR pertama?

Saya mendapat masalah yang sama.
Apakah ada solusi untuk masalah ini?

Ya Tuhan! Ini tahun 2020 dan ini masih buka. Tolong guys, perbaiki ini secepatnya.
FYI: Saya menggunakan HeidiSql v10.3

Juga mengalami ini hari ini. Satu-satunya alasan saya harus membuka SSMS :(

Berikut adalah skrip untuk menghasilkan tabel pada MS SQL 12.0.5223.6 yang menggambarkan masalah:

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 tidak mendeteksi kunci utama:
image

Berikut adalah skrip yang memilih indeks kunci utama pada MS SQL (mungkin bukan versi MS SQL yang terlalu awal):

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]
Apakah halaman ini membantu?
0 / 5 - 0 peringkat