PostgreSQL中使用pgcrypto更换密钥后更新加密列的方法
更换pgcrypto加密密钥的更新语句
要将现有用key1加密的ssn列数据替换为key2加密的内容,你可以通过解密旧值+重新加密的方式执行更新:
UPDATE info SET ssn = pgp_sym_encrypt(pgp_sym_decrypt(ssn, 'key1'), 'key2');
注意事项
- 执行前务必备份数据,避免操作失误导致数据丢失
- 若表数据量较大,该操作会消耗较多数据库资源,建议在业务低峰时段执行
- 可添加
WHERE条件分批更新,减少锁表时长,示例:UPDATE info SET ssn = pgp_sym_encrypt(pgp_sym_decrypt(ssn, 'key1'), 'key2') WHERE name = 'John'; -- 可根据主键或其他字段调整条件 - 更新完成后,验证新密钥是否能正常解密:
SELECT name, pgp_sym_decrypt(ssn, 'key2') FROM info;
内容的提问来源于stack exchange,提问作者Mohit224
相关产品推荐
相关产品推荐

