簡體   English   中英

MySQL如何在WHERE中使用兩個加密字段更新記錄

[英]MySQL How to update a record using two encrypted fields in the WHERE

不確定是否有可能,但是如果可以的話,我想一步一步做。 如果我傳入的值與另外兩個加密的字段匹配,我想更新字段3。 這是我沒有用的東西...

UPDATE tbl 
SET field3=CONCAT(field3, 'some additional value') 
WHERE field1 = ENCRYPTION_APPROACH('my_value_in_the_clear', ENCRYPTION_SETTINGS) AND 
field2 = ENCRYPTION_APPROACH('my_other_value_in_the_clear', ENCRYPTION_SETTINGS);

字段1和2不是NOT鍵,但是通過編程保證它們是唯一的。 加密似乎正在起作用,我可以使用相同的方法首先插入記錄,然后再選擇它。 但是,當我使用經過驗證的測試數據運行此程序時,出現“ 0行受影響”,並且沒有錯誤消息。

我可以進行復合調用,首先使用相同的方法選擇記錄,然后通過其鍵進行更新(這適用於其他調用)。 但是,如果可以的話,我真的很想保持這一步。 思考?

啊哈!

環顧四周后,我發現了REAL解決方案。 每當您有CONCAT且某些記錄失敗時,請使用此小技巧...

UPDATE tbl 
SET field3=IFNULL(CONCAT(field3, 'some additional value'), 'some additional value')
WHERE field1 = ENCRYPTION_APPROACH('my_value_in_the_clear', ENCRYPTION_SETTINGS) AND 
field2 = ENCRYPTION_APPROACH('my_other_value_in_the_clear', ENCRYPTION_SETTINGS);

並不是加密失敗了……而是當CONCAT第一次對null字段進行操作時,它返回的是null。 這個小技巧將使您擺脫第一次嘗試連接上一個值並在隨后的所有調用中使用的麻煩!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM