myslq有條件插入資料

2021-06-05 02:51:53 字數 844 閱讀 4171

要求是這樣的:

我有乙個表存著基礎資料有乙個欄位是 管理號 我的目的是先查詢最新的管理號按照規則生成新管理號 然後insert到表裡新資料  由於查詢並不鎖表 所以在查詢到insert這步中間會有可能兩線程查詢到相同的管理號?

參考了關鍵是如下的mysql語句,

插入多條記錄:

insert into clients 

(client_id, client_name, client_type)

select supplier_id, supplier_name, 'advertising'

from suppliers

where not exists (select * from clients

where clients.client_id = suppliers.supplier_id);

插入單條記錄:

insert into clients 

(client_id, client_name, client_type)

select 10345, 'ibm', 'advertising'

from dual

where not exists (select * from clients

where clients.client_id = 10345);

所以在插入時可以檢測管理號存在不存在,插入若不成功則取出目前的最新管理號,重新計算後再插入,直至成功。

這種情況很多的,比如火車、影院售票等,由於併發處理量很大,往往查詢到有票的,但實際下單時此票已售出,不知道這些系統是如何處理的。

7 1有條件的更新插入 Merge into

插入之前,看錶中是否有這次準備插入的卻已經存在的資料,存在的進行更新,不存在進行插入 在oracle裡面有兩種方法 一,merge into merge into test1 using test2 on test1.numid test2.numid when matched then 不需要填寫...

有條件的表聯接

表1和表2在聯接時,希望顯示表1的全部記錄以及表2的部分記錄。嘗試使用下面的 sql 語句 select table1.table2as.from table1 left outer join select from table2 where rightname 計畫編制員 as table2as ...

RAILS有條件的校驗

rails中所有的驗證宣告都可以接受 if 選項,可以指定一段在校驗之前執行的 比如 只有在郵箱位址不為空的時候才驗證郵箱位址的格式 使用proc物件,呼叫時,傳入當前的模型物件作為引數,返回false時,不做校驗 validates format of email,with a za z0 9 a...