mysql實(shí)現(xiàn)不設(shè)置唯一鍵對(duì)某字段唯一性插入

疑問(wèn)

當(dāng)一張表某個(gè)字段不適合建唯一鍵,且在某個(gè)插入場(chǎng)景里需要該字段值不存在時(shí)才插入,我們?cè)撊绾螌?xiě)sql呢?
今天我們不用鎖表,用一行代碼搞定它

實(shí)現(xiàn)

我們表User 為例
字段 id, name, tmp

SQL:

INSERT INTO User(name) SELECT '張三' FROM DUAL WHERE NOT EXISTS(SELECT name FROM User WHERE name = '張三')

原子性

這里你有沒(méi)有一絲疑問(wèn),子查詢(xún)到插入的這個(gè)過(guò)程是不是原子性的呢?
我們實(shí)驗(yàn)一下:


image

事實(shí)證明,在上述語(yǔ)句中,查詢(xún)到插入的過(guò)程是加鎖的。查詢(xún)到插入的過(guò)程是事務(wù)操作,其實(shí),所有子查詢(xún)也都是如此

本文由【希希大隊(duì)長(zhǎng)】原創(chuàng)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容