Je begrijpt dat je botsingen zult krijgen, toch?
je moet zoiets doen en dit kan impasses veroorzaken, dus wees er zeker van wat je hier probeert te bereiken
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
Om het botsingsgedoe uit te leggen, heb ik een code gegeven
maak eerst deze tabel en voeg een rij in
CREATE TABLE Table1(id int primary key not null, data_field char(100))
GO
Insert Table1 values(1,'[blob of data]')
Go
Open nu twee queryvensters en voer dit tegelijkertijd uit
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
Je zult er een heleboel zien
Server:Msg 2627, niveau 14, staat 1, regel 7 Schending van PRIMARY KEY-beperking 'PK__Table1__3213E83F2962141D'. Kan geen dubbele sleutel invoegen in object 'dbo.Table1'. De instructie is beëindigd.