Du forstår godt, at du vil have kollisioner?
du er nødt til at gøre sådan noget, og dette kan forårsage dødvande, så vær meget sikker på, hvad du forsøger at opnå her
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
For at forklare kollisionstingen har jeg givet noget kode
opret først denne tabel og indsæt en række
CREATE TABLE Table1(id int primary key not null, data_field char(100))
GO
Insert Table1 values(1,'[blob of data]')
Go
Åbn nu to forespørgselsvinduer og kør dette på samme tid
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
Du vil se en masse af disse
Server:Besked 2627, niveau 14, tilstand 1, linje 7 Overtrædelse af PRIMÆR NØGLE-begrænsning 'PK__Tabel1__3213E83F2962141D'. Kan ikke indsætte dubletnøgle i objektet 'dbo.Table1'. Sætningen er blevet afsluttet.