增加sql表中实体的列值

ajsxfq5m  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(164)

我设置了下表:

CREATE TABLE transactions (txn_id SERIAL, stock VARCHAR NOT NULL, qty INT NOT NULL, user_id INT NOT NULL);

插入几行时,表如下所示:

txn_id | stock  | qty | user_id
--------+--------+-----+---------
      1 | APPL   |   2 |       1
      2 | GOOGLE |   3 |       4
      3 | TSLA   |   1 |       2

现在,在向表中添加新插入时,例如- INSERT INTO transactions (stock, qty, user_id) VALUES ('APPL', 3, 1) 如果'stock'和'user\u id'匹配(如上面的示例中),我只希望在数据库中更新数量。例如,在本例中,行1实体的“qty”列值应增加+3。
有没有一个解决方案,而不使用任何orm,如sqlalchemy等?

jv4diomz

jv4diomz1#

你想要什么 on conflict . 首先在 stock / user_id 柱:

alter table transactions add constraint unq_transactions_stock_user_id unique (stock, user_id);

然后用这个和一个 on conflict 声明:

insert into transactions (stock, qty, user_id) 
    values ('APPL', 3, 1)
    on conflict on constraint unq_transactions_stock_user_id do update
        set qty = coalesce(transactions.qty, 0) + excluded.qty;

相关问题