回答

收藏

PostgreSQL在单个查询中更新多个表

技术问答 技术问答 170 人阅读 | 0 人回复 | 2023-09-14

我有两张桌子,如下所示:
) n# F& J' h( H[ol]serial_table
7 n. y6 j- ?$ \' ]id CHARACTER VARYING(20),serial_key CHARACTER VARYING(20),% O, M* D3 u+ p( ^
PRIMARY KEY(id,serial_key)serial_rate:
, |* s- r8 K1 ]+ u8 a4 Bid CHARACTER VARYING(20),serial_key CHARACTER VARYING(20),
4 L2 X7 y0 v6 n) R6 D6 z- C6 }; G$ orate NUMERIC,( g  c( d. I- q( D4 k
PRIMARY KEY(id,serial_key),% S/ q% U' a, I7 L! Q! x5 S
FOREIGN KEY (id,serial_key) REFERENCES serial_table(id,serial_key)$ G0 G, i5 ^) N* X% t$ p* d
[/ol]现在我想更新,serial_rate.rate并serial_table.serial_key从单个SQL查询,如:$ {7 j. I( i+ X, R: Y5 U( o) j; [
UPDATE inventory.serial_table AS s JOIN inventory.serial_rate AS r ON (s.id,s.serial_key) = (r.id,r.serial_key) SET s.serial_key = '0002',r.rate = 22.53WHERE (s.id,s.serial_key) = 我知道这是不正确的。有一种可能的方法,    因为我想用这个句子PreparedStatement在Java中创一个?
; ~) R9 ?# _0 f3 m- v编辑
/ Y% k5 z0 v# x0 F- u2 E; O这个问题不在PreparedStatementsJava中。是关于它的SQL语法,我希望在创建中SQL将其作为参数传递PreparedStatement。3 T) P& [( `; O) z' q$ g4 u
我不想要任何答案PreparedStatement
/ p$ U& x5 P6 c) q* z& j                                                               
5 l, p2 \, w8 @  H  x1 Q) C    解决方案:                                                                  G/ X4 X7 i! |+ }/ u1 j; y
                                                                这是CTE但我不知道如何把它包装成准备好的东西Java东西中)
; A/ h1 B+ I0 A5 f! xWITH src AS (       UPDATE serial_rate        SET rate = 22.53,serial_key = WHERE serial_key = '002' AND id =   RETURNING *        )UPDATE serial_table dstSET serial_key = src.serial_keyFROM src-- WHERE dst.id = src.id AND dst.serial_key  = '002'WHERE dst.id = '01' AND dst.serial_key  =
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则