在插入过程中锁定表格

时间:2011-01-26 13:41:48

标签: sql sql-server-2005

我有一个表,希望将5000条记录作为批量插入插入,但我要从表中为每个语句选择最大ID我决定编写一个选择最大ID一次的存储过程为每条记录增加它以快速插入记录但是有可能让其他一些用户使用相同的存储来插入whick可能会产生冲突 如何使用Sp或普通插入脚本完成插入之前,如何独占锁定表?

1 个答案:

答案 0 :(得分:1)

像Quassnoi所说,最好的办法是使用IDENTITY,并且过程复杂得多。

如果您致力于使用您描述的流程,那么它应该采取以下措施:

INSERT INTO MyTable WITH (TABLOCK)
(field 1, field2, field3...)
VALUES
(value 1, value 2, value 3...)

TABLOCK提示为插入/更新添加了一个独占表锁(您也可以使用TABLOCKX这是一个显式的独占锁,但除了SELECT之外没有必要。

如果您的跟踪标记设置正确,TABLOCK提示也将启用最少日志记录的插入,这通常明显更快,但只有5000条记录您可能没有注意到差异。