标签: postgresql-13

如何在 PostgreSQL 13 中使用 INOUT 参数调用存储过程(不是函数)

我有这个存储过程:

CREATE OR REPLACE PROCEDURE SP_ObtenerSecuencialFactura(INOUT p_secuencial INT)
LANGUAGE PLPGSQL 
AS 
$$
BEGIN
    SELECT MAX("CODIGOFACTURA") + 1 INTO p_secuencial FROM "FACTURA";
    IF p_secuencial IS NULL THEN
        p_secuencial := 1;
    END IF;
END
$$
Run Code Online (Sandbox Code Playgroud)

和电话:

DECLARE secuencial INT;
CALL SP_ObtenerSecuencialFactura(secuencial);
RAISE NOTICE '%', secuencial;
Run Code Online (Sandbox Code Playgroud)

但是当我调用该存储过程时出现此错误:

错误:“INT”处或附近的语法错误

第 1 行:DECLARE secuencial INT;

怎么了?我正在寻找示例,但仅存在于函数中。

stored-procedures postgresql-13

5
推荐指数
1
解决办法
2254
查看次数

如何在 PostgreSQL 中的数组上添加外键约束?

如何在 PostgreSQL 中的数组上添加外键约束?

角色查找表

CREATE TABLE party_role_cd
(
  party_role_cd bigint NOT NULL,
  code character varying(80) NOT NULL,
  CONSTRAINT party_role_cd PRIMARY KEY (party_role_cd)
);
Run Code Online (Sandbox Code Playgroud)

参与方可以有零个或多个角色 [0-N 关系]

CREATE TABLE party
(
  party_id biging NOT NULL,
  party_role_cd bigint[] NOT NULL,
  CONSTRAINT party_id PRIMARY KEY (party_id)
);
Run Code Online (Sandbox Code Playgroud)

如何在表中添加foreign key约束?party_role_cd arrayparty

arrays postgresql constraints postgresql-12 postgresql-13

4
推荐指数
1
解决办法
3476
查看次数

PostgreSQL 中高效的全文搜索,在另一列上排序

在 PostgreSQL 中,如何有效地对一列进行全文搜索,对另一列进行排序?

假设我有一个tbl包含列abc、 ... 和许多(> 一百万)行的表。我想对列进行全文搜索,a并按其他列对结果进行排序。

所以我va从 column创建一个 tsvector a

ALTER TABLE tbl
ADD COLUMN va tsvector GENERATED ALWAYS AS (to_tsvector('english', a)) STORED;
Run Code Online (Sandbox Code Playgroud)

iva为其创建一个索引,

CREATE INDEX iva ON tbl USING GIN (va);
Run Code Online (Sandbox Code Playgroud)

ib和列的索引b

CREATE INDEX ib ON tbl (b);
Run Code Online (Sandbox Code Playgroud)

然后我查询像

SELECT * FROM tbl WHERE va @@ to_tsquery('english', 'test') ORDER BY b LIMIT 100
Run Code Online (Sandbox Code Playgroud)

现在 Postgres 明显的执行策略是:

  1. 对于频繁出现的单词,使用 进行索引扫描ib,过滤va …

postgresql full-text-search query-optimization postgresql-13 postgresql-14

4
推荐指数
1
解决办法
3698
查看次数

所有者是否可以没有餐桌权限?

我们一直在尝试在其中一个数据库中创建许多角色和用户。有一次我遇到了这个问题,我发现很难重现。

它在数据库中是可重现的,但是当我创建一个新数据库并尝试相同的操作时,它不会发生:(

ALTER TABLE public.table_name OWNER TO role_name;

通常,在我们运行此查询之后。这table_name将由owned角色role_name/用户决定。

运行上述查询后,如果我们运行以下查询:

select grantee, table_catalog, privilege_type, table_schema, table_name 
from information_schema.table_privileges 
where table_name = 'table_name' 
order by grantee, table_schema, table_name
Run Code Online (Sandbox Code Playgroud)

我们将得到以下结果:

 role_name   | database_name   | INSERT       | public   | table_name
 role_name   | database_name   | DELETE       | public   | table_name
 role_name   | database_name   | SELECT       | public   | table_name
 role_name   | database_name   | UPDATE       | public   | table_name
 role_name   | database_name   | TRUNCATE     | public   | table_name
 role_name …
Run Code Online (Sandbox Code Playgroud)

sql postgresql privileges postgresql-13

4
推荐指数
1
解决办法
988
查看次数

如何移动 postrgresql 13 数据库的位置

我希望将 pgsql 13 数据库的位置从默认位置移动到另一个磁盘。

我最初点击了这个指南链接

但这是针对 v9.5,而不是 13。我的挑战是,通过运行以下命令找到的数据库位置也是存储配置文件的位置。

SHOW data_directory;
     data_directory
------------------------
 /var/lib/pgsql/13/data
(1 row)

SHOW config_file;
     config_file
----------------------------------------
 /var/lib/pgsql/13/data/postgresql.conf
(1 row)
Run Code Online (Sandbox Code Playgroud)

在 9.5 版本中,配置文件位于单独的区域,因此此时我陷入了指南的困境。

看来如果我想移动数据库位置,我还必须移动所有配置文件。

我尝试将整个数据文件夹移动到新位置并重新启动 postgres,但没有成功。

任何帮助,将不胜感激。

postgresql postgresql-13

3
推荐指数
1
解决办法
6940
查看次数

AWS EC2 Amazon Linux 2 AMI 启动 PostgreSQL

拥有一个运行 Amazon Linux AMI 2 的 AWS EC2 实例。使用以下命令安装了 PostgreSQL

 sudo amazon-linux-extras install postgresql13 
Run Code Online (Sandbox Code Playgroud)

现在,如何启动并配置它?

我可以看到 Package postgresql-13.3-2.amzn2.0.1.aarch64 already installed...

postgresql amazon-web-services amazon-linux amazon-linux-2 postgresql-13

3
推荐指数
1
解决办法
2421
查看次数

AWS EC2 Amazon Linux 2 AMI PostgreSQL 安装

拥有一个正在运行的 AWS EC2 实例Amazon Linux AMI 2。喜欢安装就可以PostgreSQL Server 13了。按照此处提到的说明进行操作 - https://www.postgresql.org/download/linux/redhat/

但是,执行时 -

sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Run Code Online (Sandbox Code Playgroud)

出现以下错误 -

sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Failed to set locale, defaulting to C
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
pgdg-redhat-repo-latest.noarch.rpm                                                                                   | 8.1 kB  00:00:00     
Examining /var/tmp/yum-root-TO1dIc/pgdg-redhat-repo-latest.noarch.rpm: pgdg-redhat-repo-42.0-24.noarch
Marking /var/tmp/yum-root-TO1dIc/pgdg-redhat-repo-latest.noarch.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package pgdg-redhat-repo.noarch 0:42.0-24 will be installed
--> Processing Dependency: /etc/redhat-release for package: pgdg-redhat-repo-42.0-24.noarch
amzn2-core                                                                                                           | 3.7 kB  00:00:00 …
Run Code Online (Sandbox Code Playgroud)

postgresql amazon-web-services amazon-linux amazon-linux-2 postgresql-13

2
推荐指数
1
解决办法
6182
查看次数

目前仅支持认证明文密码和认证md5密码。收到 10

我在 postgresql13 中使用 npgsql,但是在尝试连接时出现以下错误:

目前仅支持认证明文密码和认证md5密码。收到 10

我的连接行是: NpgsqlConnection conn = new NpgsqlConnection("服务器= xxxx;端口= xxxx;用户ID = xxxx;密码= xxx;数据库=数据库;")

在 postgresql 9.6 中一切正常,但它迁移到版本 13 并产生了这个问题

c# postgresql npgsql postgresql-13

1
推荐指数
1
解决办法
1万
查看次数