Anda mengerti bahwa Anda akan mengalami tabrakan kan?
Anda perlu melakukan sesuatu seperti ini dan ini dapat menyebabkan kebuntuan, jadi pastikan apa yang ingin Anda capai di sini
DECLARE @id int
BEGIN TRAN
SELECT @id = MAX(id) + 1 FROM Table1 WITH (UPDLOCK, HOLDLOCK)
INSERT INTO Table1(id, data_field)
VALUES (@id ,'[blob of data]')
COMMIT TRAN
Untuk menjelaskan hal tabrakan, saya telah menyediakan beberapa kode
pertama buat tabel ini dan masukkan satu baris
CREATE TABLE Table1(id int primary key not null, data_field char(100))
GO
Insert Table1 values(1,'[blob of data]')
Go
Sekarang buka dua jendela kueri dan jalankan ini secara bersamaan
declare @i int
set @i =1
while @i < 10000
begin
BEGIN TRAN
INSERT INTO Table1(id, data_field)
SELECT MAX(id) + 1, '[blob of data]' FROM Table1
COMMIT TRAN;
set @i [email protected] + 1
end
Anda akan melihat banyak dari ini
Server:Msg 2627, Level 14, Status 1, Baris 7Pelanggaran batasan PRIMARY KEY 'PK__Table1__3213E83F2962141D'. Tidak dapat menyisipkan kunci duplikat di objek 'dbo.Table1'.Pernyataan telah dihentikan.