代码之家  ›  专栏  ›  技术社区  ›  AppDreamer

MySQL如何使用WHERE中的两个加密字段更新记录

  •  0
  • AppDreamer  · 技术社区  · 7 年前

    不确定这是可能的,但如果可以的话,我想一步完成。如果传入的值与加密的其他两个字段匹配,我想更新字段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不是键,但通过编程保证它们是唯一的。加密似乎正在工作,我可以使用相同的方法最初插入记录,然后再选择它。但是,当我使用经过验证的测试数据运行这个程序时,我得到“0行受影响”,并且没有错误消息。

    我可以做一个复合调用,首先用同样的方法选择记录,然后用它的键更新它(这对另一个调用有效)。但如果可以的话,我真的想把这个保持在一步。思想?

    1 回复  |  直到 7 年前
        1
  •  1
  •   AppDreamer    7 年前

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