我有2個表如下:PostgreSQL的更新多個表
serial_table
id CHARACTER VARYING(20), serial_key CHARACTER VARYING(20), PRIMARY KEY(id, serial_key)
serial_rate:
id CHARACTER VARYING(20), serial_key CHARACTER VARYING(20), rate NUMERIC, PRIMARY KEY(id, serial_key), FOREIGN KEY (id, serial_key) REFERENCES serial_table(id, serial_key)
現在我想更新serial_rate.rate
和serial_table.serial_key
從一個SQL查詢如:
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
它是關於SQL語法,我希望傳遞的參數創建一個PreparedStatement
。 我不想要任何關於PreparedStatement
的答案。
你真的打算更新一個PK組件的'serial_table.serial_key'嗎?並且:應該更新serial_rate.serial_key(也是一個PK組件,而FK是第一個)?否則:FK約束可能被違反。 – wildplasser
@wildplasser第一個答案是肯定的,至於第二部分,FK是ON UPDATE CASCADE ON DELETE RESTRICT。 – Blip
可能重複[爲多個表Java創建一個preparedstatement](http://stackoverflow.com/questions/15276124/one-preparedstatement-for-multiple-tables-java) –