Postgres异步创建表

时间:2017-12-31 08:41:09

标签: postgresql asynchronous

我正在努力使用postgres和异步任务队列

我正在尝试创建一个新表 - 无论工作者首先达到这一点 - 创建表

使用法规

create table if not exists

'表已存在'异常提升

这真的很奇怪,因为当这样做时,单个工作人员 - 即试图同步创建表两次,第二次写一个通知(不是例外)

1 个答案:

答案 0 :(得分:2)

不是答案,仅仅是关于如何复制的信息,所以请耐心等待。

打开两个终端,例如tty1tty2,在每个终端中打开psql

<强> tty1

nd@postgres=# begin;
BEGIN
*nd@postgres=# create table if not exists foo();
CREATE TABLE
*nd@postgres=# 

<强> tty2

nd@postgres=# begin;
BEGIN
*nd@postgres=# create table if not exists foo();

(等待锁定)

<强> tty1

*nd@postgres=# commit;
COMMIT

<强> tty2

ERROR:  duplicate key value violates unique constraint "pg_type_typname_nsp_index"
DETAIL:  Key (typname, typnamespace)=(foo, 16386) already exists.
!nd@postgres=# 

在这种情况下,不确定PostgreSQL应该更聪明。 IMO应用程序逻辑有问题...