第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

只有在沒有插入行的情況下才插入行

只有在沒有插入行的情況下才插入行

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

3 回答

?
慕桂英4014372

TA貢獻1871條經(jīng)驗 獲得超13個贊

您可以使用合并:

MERGE INTO TargetUSING (VALUES (@primaryKey, @value1, @value2)) Source (key, value1, value2)ON Target.key = Source.keyWHEN MATCHED THEN
    UPDATE SET value1 = Source.value1, value2 = Source.value2WHEN NOT MATCHED BY TARGET THEN
    INSERT (Name, ReasonType) VALUES (@primaryKey, @value1, @value2)


查看完整回答
反對 回復(fù) 2019-06-17
  • 3 回答
  • 0 關(guān)注
  • 525 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號