mysql有條件插入數據

要求是這樣的:

 

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

 

 

關鍵是如下的MYSQL語句,

 

插入多條記錄:

 

[sql]

   

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);   

 

插入單條記錄:

 

[sql]

   

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);   

 

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

 

 

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

 

 

 

作者 meditatorzhang

You May Also Like