我有2个表格如下:
> serial_table
id CHaraCTER varying(20),serial_key CHaraCTER varying(20),PRIMARY KEY(id,serial_key)
> serial_rate:
id CHaraCTER varying(20),rate NUMERIC,serial_key),FOREIGN KEY (id,serial_key) REFERENCES serial_table(id,serial_key)
现在我想从单个SQL查询更新serial_rate.rate和serial_table.serial_key,如:
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.53 WHERE (s.id,s.serial_key) = ('01','002');
我知道的是不正确的.是否有可能这样做,因为我想使用该语句在Java中创建PreparedStatement?
编辑
这个问题不是关于Java中的PreparedStatements它是关于我希望在创建PreparedStatement时作为参数传递的sql语法.我不想要任何有关PreparedStatement的答案.
解决方法
这是一个CTE的东西(但我不知道如何将它包装成一个准备好的Java东西)
WITH src AS ( UPDATE serial_rate SET rate = 22.53,serial_key = '0002' WHERE serial_key = '002' AND id = '01' RETURNING * ) UPDATE serial_table dst SET serial_key = src.serial_key FROM src -- WHERE dst.id = src.id AND dst.serial_key = '002' WHERE dst.id = '01' AND dst.serial_key = '002' ;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。