1
我在rhel7上使用postgres 9.2并已开始查看列加密。我对使用INSERT
声明获得加密没有任何问题,但是我无法解决如何使用UPDATE
语句为已包含行的表执行此操作。在更新语句中加密postgres列
我一直在使用这个网址http://www.postgresonline.com/journal/archives/165-Encrypting-data-with-pgcrypto.html
的例子,我INSERT
是从这个URL所采取的格式。
INSERT INTO testuserscards(username, cc)
SELECT robotccs.username, pgp_pub_encrypt(robotccs.cc, keys.pubkey) As cc
FROM (VALUES ('robby', '41111111111111111'),
('artoo', '41111111111111112')) As robotccs(username, cc)
CROSS JOIN (SELECT dearmor('-----BEGIN PGP PUBLIC KEY BLOCK-----
super publickey goobly gook goes here
-----END PGP PUBLIC KEY BLOCK-----') As pubkey) As keys;
我周围的UPDATE
声明工作如何结合在一起的,我已经试过这看起来像以下(从上面的INSERT
使用不同的表)的各种组合只是不能让我的头。
update dg_test t1
set var2 = t2.var2 from (select pgp_pub_encrypt(var1,keys.pubkey) as var2 from dg_test) t2
where t1.var1 = t2.var1
CROSS JOIN (SELECT dearmor('-----BEGIN PGP PUBLIC KEY BLOCK-----
....
-----END PGP PUBLIC KEY BLOCK-----') As pubkey) As keys;
我想另一个办法是建立一个ON INSERT
触发做加密,然后运行DUMP
和RESTORE
。
有没有人有一个想法如何做到这一点与UPDATE
?
这样做,谢谢,救了我一大块工作 – davegreen100