MySQL樹立獨一索引完成拔出反復主動更新。本站提示廣大學習愛好者:(MySQL樹立獨一索引完成拔出反復主動更新)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL樹立獨一索引完成拔出反復主動更新正文
媒介
在我們往數據庫拔出數據的時刻,須要斷定某個字段能否存在,假如存在則履行更新操作,假如不存在則履行拔出操作,假如每次起首查詢一次斷定能否存在,再履行拔出或許更新操作,就非常不便利。上面給年夜家分享個辦法,便利年夜家完成這一功效,上面來一路看看吧。
ON DUPLICATE KEY UPDATE
這個時刻可以給這個字段(或許幾個字段)樹立獨一索引,同時應用以下 sql 語句停止拔出或更新操作:
INSERT INTO table (id, user_id, token) VALUES (NULL, '2479031', '232') ON DUPLICATE KEY UPDATE user_id = VALUES(user_id), token = VALUES(token), online = VALUES(online)
MySQL 給字段添加獨一索引
添加獨一索引 sql:
ALTER TABLE table_name ADD UNIQUE (column_list)
留意:假如沒有獨一索引,則沒法觸發 ON DUPLICATE KEY
如許的事宜,DUPLICATE
表現反復的意思,如某個字段沒有添加獨一索引,則不以為拔出異樣的值是反復的,所以對弗成反復的字段必需樹立獨一索引。
實例解釋
如一個需求是供給一個接口給 IOS 端,用於上報用戶 id,裝備,在線狀況等信息,接口以 GET
方法傳參,用戶每次翻開或加入 APP 就要求接口。
接口收到要求,將信息記載到數據庫,依據用戶 id 停止斷定,假如存在則更新,不存在就新增。
這個時刻 sql 語句應用下面引見的 on duplicate key update
語句。
INSERT INTO table (id, user_id, token) VALUES (NULL, '2479031', '232') ON DUPLICATE KEY UPDATE user_id = VALUES(user_id), token = VALUES(token), online = VALUES(online)
以這個 sql 為例,個中 user_id
是獨一索引字段,假如 insert
的時刻該 user_id
曾經存在,那末就將觸發更新而不是拔出,此時相當於履行了:
update table set user_id = 2479031 token = 232 where user_id = 2479031
這就是獨一索引和 ON DUPLICATE KEY UPDATE
的用法。
總結
以上就是這篇文章的全體內容,願望能對年夜家的進修或許任務帶來必定的贊助,假如有疑問年夜家可以留言交換。