我試圖用Postgres作爲數據庫將一個快速的JDBC應用程序放在一起,並遇到一個有趣的問題。JDBC ResultSet :: RefreshRow無法與級聯更新
我目前有2個表格,table1和table2。
CREATE TABLE table1
(
a character varying NOT NULL,
b integer NOT NULL,
CONSTRAINT table1_pkey PRIMARY KEY (b)
)
CREATE TABLE table2
(
c character varying NOT NULL,
d integer,
CONSTRAINT table2_pkey PRIMARY KEY (c),
CONSTRAINT table2_d_fkey FOREIGN KEY (d),
REFERENCES table1(b) MATCH SIMPLE
ON UPDATE CSCADE ON DELETE CASCADE
)
由於我的程序的後臺我SELECT
荷蘭國際集團*
和我的查詢持有的ResultSet
。每個表格都有一行簡單值,似乎並不重要。
我的聲明是用標記ResultSet.TYPE_SCROLL_INSENSITIVE
和ResultSet.CONCUR_UPDATE
創建的。儘管我也嘗試過SCROLL_SENSITIVE。
如果我嘗試以下方法(assumgin ResultSet rs/rs2
分別以表1 /表2是有效的,點:
rs.first(); // move to the first row (only row)
rs.updateInt(2, 50); // update our primary key, which is also the cascading fk
// 50 could be any number
print(rs); // Will show the old value
rs.updateRow();
print(rs); // Will show the new value
rs2.refreshRow(); // make sure we get the latest data from table2
print(rs2); // will show the old data?
我希望看到由於級聯的新值。如果我退出並重新運行應用程序,不改變任何輸入,然後它會打印正確的table2值。我猜這是由於重新運行SELECT
聲明。如果我通過運行psql或pgadmin3查看錶,這些值看起來像他們所以看起來refreshRow()並沒有把最新的東西搞垮。有沒有人知道爲什麼?
我使用:
- 的Java 1.6_29
- PostgreSQL相關9.1-901.jdbc4.jar
任何幫助,將不勝感激。