只有在沒有插入行的情況下才插入行我一直使用類似于以下內容的方法來實現這一目標:INSERT INTO TheTableSELECT
@primaryKey,
@value1,
@value2WHERE
NOT EXISTS
(SELECT
NULL
FROM
TheTable WHERE
PrimaryKey = @primaryKey).但一旦被加載,就會發生主密鑰違規事件.這是插入到此表中的唯一語句。那么,這是否意味著上述聲明不是原子的?問題是這幾乎是不可能隨意重建的。也許我可以將其修改為如下內容:INSERT INTO TheTableWITH
(HOLDLOCK,
UPDLOCK,
ROWLOCK)SELECT
@primaryKey,
@value1,
@value2WHERE
NOT EXISTS
(SELECT
NULL
FROM
TheTable WITH
(HOLDLOCK,
UPDLOCK,
ROWLOCK)
WHERE
PrimaryKey = @primaryKey)不過,也許我用錯了鎖或者用了太多的鎖什么的。我在stackoverflow網站上看到了其他一些問題,其中的答案是“if(選擇count(*).插入”等),但我總是假設一個SQL語句是原子的(可能是不正確的)。有人有什么想法嗎?
只有在沒有插入行的情況下才插入行
慕慕森
2019-06-17 17:35:28