疑問(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)