Saturday, August 3, 2013

Parallel INSERT

This seems a good starting point:



--TESTING
DECLARE
@request_info varchar(1500),
@request_user_id int;

SET @request_user_id=21;
SET @request_info='info3';
--/TESTING

--QUERY
DECLARE
@record_id int,
@userid int;

BEGIN TRANSACTION
SELECT @record_id=id,@userid=userid FROM test WITH (UPDLOCK,HOLDLOCK) WHERE info=@request_info

IF @record_id IS NULL
BEGIN
INSERT INTO test WITH (TABLOCK) (info,userid) VALUES (@request_info,@request_user_id);
SELECT SCOPE_IDENTITY()
END
ELSE IF @userid!=@request_user_id SELECT NULL
ELSE SELECT @record_id
COMMIT
--/QUERY



it worked in all my tests.


Do you have suggestions/comments about this last query?



No comments:

Post a Comment