在 PostgreSQL 中的触发器过程上指定CALLED ON NULL INPUT
, RETURNS NULL ON NULL INPUT
or STRICT
( https://www.postgresql.org/docs/current/static/sql-createfunction.html ) 会起到什么作用吗?
由于触发器过程必须声明为不带参数的函数(https://www.postgresql.org/docs/current/static/plpgsql-trigger.html),我怀疑它有任何效果,但我找不到明确的答案关于这一点。
在 PostgreSQL 15 中,当使用隐式排序规则创建索引时,会记录用于该索引的默认排序规则:
默认情况下,索引使用为要索引的列声明的排序规则或要索引的表达式的结果排序规则。具有非默认排序规则的索引对于涉及使用非默认排序规则的表达式的查询非常有用。
但是,在使用默认排序规则(如文档中所述)在列上创建索引后,我们可以更改列的排序规则。根据我的理解,更改列的排序规则不应更改已创建索引的排序规则。
因此,在任何时间点,我们都应该能够查询可能与相应列排序规则不同的索引的实际排序规则。
我们怎样才能做到这一点?
我做了一些测试,但并没有得出结论:
psql (15.3)
Type "help" for help.
postgres=# SELECT version();
version
------------------------------------------------------------------------------
PostgreSQL 15.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 12.2.0, 64-bit
(1 row)
postgres=# CREATE DATABASE test10
TEMPLATE = template0
LOCALE = "C"
ENCODING = 'UTF8';
CREATE DATABASE
postgres=# \c test10
You are now connected to database "test10" as user "postgres".
test10=# CREATE TABLE public.asset(
asset_id uuid NOT NULL,
name text NOT NULL,
CONSTRAINT pk_asset PRIMARY KEY (asset_id)
); …
Run Code Online (Sandbox Code Playgroud)