相关疑难解决方法(0)

尽管我在冲突中加入了什么,但postgres中的连续性正在增加

我正在使用Postgres 9.5并在这里看到一些有线的东西.

我有一个cron作业运行5分钟,触发一个sql语句,如果不存在则添加一个记录列表.

INSERT INTO 
   sometable (customer, balance)
VALUES
    (:customer, :balance)
ON CONFLICT (customer) DO NOTHING
Run Code Online (Sandbox Code Playgroud)

sometable.customer是主键(文本)

sometable结构是:
id:serial
customer:text
balance:bigint

现在似乎每次这个作业运行时,id字段都会以静默方式递增+1.所以下次,我真的添加一个字段,它比我上一个值高出数千个数字.我认为这个查询检查冲突,如果是这样,什么都不做,但目前似乎它试图插入记录,增加id然后停止.

有什么建议?

database postgresql

12
推荐指数
2
解决办法
5934
查看次数

在 PostgreSQL 中实现多对多关系的最佳方式是什么?

我正在尝试在 PostgreSQL 中实现多对多关系。这是我的数据库中的表:

CREATE TABLE products (
   product_id   serial PRIMARY KEY
 , product_name varchar NOT NULL
);

CREATE TABLE orders (
   order_id   serial PRIMARY KEY
 , order_name varchar NOT NULL
);

CREATE TABLE product_order (
   product_id  int REFERENCES products
 , order_id    int REFERENCES orders
 , PRIMARY KEY (product_id, order_id)
);
Run Code Online (Sandbox Code Playgroud)

products 和orders 表中不会有任何UPDATE 或DELETE,因此不需要ON DELETE 和ON UPDATE 语句。

我还创建了两个哈希索引,以便我可以搜索订单和产品名称并将其 id 存储在表中:

CREATE INDEX product_index ON products USING hash(product_name);
CREATE INDEX order_index ON orders USING hash(order_name);
Run Code Online (Sandbox Code Playgroud)

这就是我想做的:

  1. 我想插入产品表并返回插入行的 id。
  2. 我想插入订单表并返回插入行的 id。 …

sql postgresql database-design many-to-many

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