我有5個表,我使用相同的序列的下一個值。問題是,後面的表格比以前的表格獲得更大的價值。如何從JDBC中的SQL獲取sequence.nextval?
我的代碼是這樣的:
String sql = "INSERT INTO table1(id, name) VALUES (id_seq.nextval, ?)";
ps.setString(1, "bar");
ps.executeUpdate();
sql = "INSERT INTO table2(id, name) VALUES (id_seq.nextval, ?)";
ps.setString(1, "tar");
ps.executeUpdate();
sql = "INSERT INTO table3(id, name) VALUES (id_seq.nextval, ?)";
ps.setString(1, "par");
ps.executeUpdate();
sql = "INSERT INTO table4(id, name) VALUES (id_seq.nextval, ?)";
ps.setString(1, "car");
ps.executeUpdate();
sql = "INSERT INTO table5(id, name) VALUES (id_seq.nextval, ?)";
ps.setString(1, "rar");
ps.executeUpdate();
我的順序是這樣的:
CREATE SEQUENCE "ID_SEQ" MINVALUE 1 MAXVALUE 9999999999 INCREMENT BY 1 START WITH 10 CACHE 20 NOORDER NOCYCLE ;
現在,當我看着我的表,表1的編號是10,但表2的ID是11分表3的ID是12 .....我希望所有表格的ID都相同。我該怎麼辦? 預先感謝您。
編輯:必須包含多個表超過2有更普遍的問題
但是如果我有第三張桌子呢?或超過3-4桌?我想爲所有這些表使用相同的ID?必須有另一種方式?謝謝 –
也許是一個過時的問題,但您可以重複使用它插入所有語句。 例如: '插入所有 到表2(ID,姓名)值(id_seq.currval,?) 到表2(ID,姓名)值(id_seq.currval,?) 到表2(ID,姓名)值(id_seq.currval,?) ..... 從2中選擇1;' 選擇部分是強制性的。它的工作原理是因爲oracle將它作爲單個語句,因此不會遞增nextval序列。 – Artur