faw*_*zib 1 sql postgresql transactions commit
尝试运行 sha256 函数
CREATE EXTENSION pgcrypto;
CREATE OR REPLACE FUNCTION sha256(bytea) returns text AS $$
SELECT encode(digest($1, 'sha256'), 'hex')
$$ LANGUAGE SQL STRICT IMMUTABLE;
WITH
tab_email as (SELECT 'my@email.com'::text as email FROM tmp),
INSERT INTO users (email, password) VALUES ((SELECT email FROM tab_email), sha256('mypass'));
Run Code Online (Sandbox Code Playgroud)
我收到这个错误
错误:函数 sha256(text) 不存在
这是因为 Postgres 的内置sha256函数需要一个bytea参数:
citus=> \df+ sha256
List of functions
Schema | Name | Result data type | Argument data types | Type | Volatility | Parallel | Owner | Security | Access privileges | Language | Source code | Description
------------+--------+------------------+---------------------+------+------------+----------+----------+----------+-------------------+----------+--------------+--------------
pg_catalog | sha256 | bytea | bytea | func | immutable | safe | postgres | invoker | | internal | sha256_bytea | SHA-256 hash
(1 row)
Run Code Online (Sandbox Code Playgroud)
所以只需投射到::bytea第一个。
citus=> select encode(sha256('a'::bytea), 'hex');
encode
------------------------------------------------------------------
ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb
(1 row)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1899 次 |
| 最近记录: |