小编pet*_*sey的帖子

INSERT [...] ON CONFLICT可用于外键违规吗?

特定

=> select * from referenced;
 referenced_id | name  
---------------+-------
             1 | one
             2 | two
             3 | three
Run Code Online (Sandbox Code Playgroud)

=> select * from entries;
 entry_id | referenced_id |      name      
----------+---------------+------------------
        1 |             3 | references three
Run Code Online (Sandbox Code Playgroud)

在哪里referenced_identry_id是主键.

entries如果entry_id已经存在或引用的项不存在,我想要一个insert语句来跳过该插入.第一个很容易做到:

INSERT INTO entries
VALUES (1, 2, 'references two')
ON CONFLICT (entry_id) DO NOTHING;
Run Code Online (Sandbox Code Playgroud)

是否有可能在这里检查是否存在外键?

sql postgresql upsert sql-insert postgresql-9.5

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

在不同的PostgreSQL服务器上提取时代的结果不同

我们将时间戳转换为纪元,对它们进行一些数学运算,然后将它们转换回时间戳.数据库中的所有时间都是TIMESTAMP WITHOUT TIME ZONE.

由于在英国时间切换到夏令时在一台服务器上关闭了一个小时但在另一台服务器上没有,所以我做了一点测试:

SHOW SERVER_VERSION;
SHOW TIMEZONE;
SELECT extract(EPOCH FROM TIMESTAMP '1970-01-01');
Run Code Online (Sandbox Code Playgroud)

我得到一台服务器

 server_version 
----------------
9.1.15
(1 row)

 TimeZone 
----------
GB
(1 row)

 date_part 
-----------
         0
(1 row)
Run Code Online (Sandbox Code Playgroud)

但另一方面

 server_version 
----------------
9.3.6
(1 row)

 TimeZone 
----------
GB
(1 row)

 date_part 
-----------
     -3600
(1 row)
Run Code Online (Sandbox Code Playgroud)

是否有任何服务器设置可能导致此问题?

或者extract在Postgres 9.1之后做出改变的行为?

postgresql postgresql-9.1 postgresql-9.3

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

Postgres:将列聚合到数组中

我有以下两个表:

# select * from list;
  list_id |         name
 ---------+----------------------
        9 | Popular
       11 | Recommended
Run Code Online (Sandbox Code Playgroud)

# select * from list_item;
 list_id | game_id | position 
---------+---------+----------
      11 |       2 |        0
       9 |      10 |        1
      11 |       5 |        1
      11 |       4 |        4
      11 |       6 |        2
      11 |       7 |        3
       9 |       3 |        0
Run Code Online (Sandbox Code Playgroud)

我希望每个列表都有一个游戏ID数组,如下所示:

 list_id |     name    | game_ids
---------+-------------+------------
       9 | Popular     | {3,10}
      11 | Recommended | {2,5,6,7,4} …
Run Code Online (Sandbox Code Playgroud)

postgresql

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