程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySql更新時返回主鍵id

MySql更新時返回主鍵id

編輯:MySQL綜合教程

MySql更新時返回主鍵id


最近做項目,遇到一個邏輯,就是在修改單條記錄時需要返回該記錄的id。

先說一下我的使用環境,springMVC+MyBatis,於是上度娘查了一下,將結果記錄一下,僅供日後參考和大家們共同探討

具體邏輯就是在多個條件下,包括一個嵌套查詢,對一條記錄進行更新,並返回該記錄的主鍵id,在這個查詢語句裡面用到一個變量update_id在執行更新語句的時候將本記錄的id重新賦值為自身的id,同時將自身的id賦值給updatge_id這個變量,最後返回這個變量,就是這個更新最後的目的。

 

SET @update_id := 0;

UPDATE activity_prize_voucher apv
SET apv.mobile = 18888888888,
 apv.state = 1,
 apv.exchange_time = NOW(),
 apv.id =(SELECT @update_id := id)
WHERE
	apv.prize_id = 2
AND apv.state = 0
AND mobile IS NULL
AND exchange_time IS NULL
<span style="color:#ff0000;">AND(
	SELECT
		vv.exchangeCount <= 2000
	FROM
		(
			SELECT
				COUNT(*)AS exchangeCount
			FROM
				activity_prize_voucher apvv
			WHERE
				apvv.prize_id = 2
			AND apvv.state = 1
			AND DATE_FORMAT(NOW(), '%Y%m%d')= DATE_FORMAT( apvv.exchange_time, '%Y%m%d' )
		)AS vv
)</span>
LIMIT 1;

SELECT
	@update_id;

 

在 Mapper.xml內的標簽使用為select標簽

 

<select id="exchangeVoucher" parameterType="hashmap" resultType="java.lang.Integer">
   SQL
</select>

 

在java Dao內方法為:

 

int exchangeVoucher(Map<String, Object> queryParams);

就這麼簡單,這個功能就初步完成,下面對這個邏輯進行優化調整

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved