1

过去几周我一直在使用 PostgreSQL,我一直很喜欢它!

我使用 crypt() 和 gen_salt() 生成密码哈希,方法是将其添加到插入查询中,如下所示:

crypt(:password, gen_salt('bf', 8))

同样对于选择我使用类似的东西:

crypt(:password, u.password)

我想通过自动化表密码列上的哈希而不是 SQL 查询或附加函数来简化我的 SQL 代码。

更清楚地说,当我在表中插入一行时,我希望它立即转换散列/比较。

有办法吗?如果是的话,那会是明智的吗?

4

1 回答 1

1

我不会评论“那会明智吗?” 问题的一部分(不是因为我认为这是不明智的,而是因为我对您的需求了解不够)。

如果要在 INSERT 或 UPDATE 期间自动计算列值,则需要触发器(请参阅CREATE TRIGGER)

如果要在 SELECT 期间自动计算列值,则需要一个视图(请参阅CREATE VIEW)。

还有其他方法可以实现您的要求,但触发器和视图可能是最直接的机制。

于 2016-05-04T16:54:16.313 回答