Я преобразовываю базу данных, и мне нужно установить генератор в значение до генерации новых чисел.
Скажем, генератор называется gtest. Я пробовал следующее:
PreparedStatement nrps = csource.prepareStatement("alter sequence gtest restart with 100");
а также
PreparedStatement nrps = csource.prepareStatement("set gopdracht to 100");
Вариант 1 дает мне недействительный синтаксис, а опция 2 дает системную переменную unkown.
Что я делаю не так?
Я начинаю подозревать, что вы используете соединение с базой данных без firebird, так как нет сообщения об ошибке Firebird "Неизвестная системная переменная" (это, однако, ошибка MySQL).
Я тестировал его с Jaybird 2.2.4 на Firebird 2.5 и оба ALTER SEQUENCE... RESTART WITH...
и SET GENERATOR... TO...
работают без ошибок.
Я использовал следующую примерную программу:
private static final String fileName = "D:/data/db/alterseq.fdb";
public static void main(String[] args) throws Exception {
FBManager manager = new FBManager();
manager.setCreateOnStart(true);
manager.setDropOnStop(true);
manager.setUserName("sysdba");
manager.setPassword("masterkey");
manager.setFileName(fileName);
manager.start();
try (Connection con = DriverManager.getConnection(
"jdbc:firebirdsql://localhost/" + fileName, "sysdba", "masterkey")) {
try (Statement ddlStmt = con.createStatement()) {
ddlStmt.execute("CREATE SEQUENCE seq_test");
}
try (PreparedStatement pstmt = con.prepareStatement(
"ALTER SEQUENCE seq_test RESTART WITH 100")) {
pstmt.execute();
}
try (PreparedStatement pstmt = con.prepareStatement(
"SET GENERATOR seq_test TO 200")) {
pstmt.execute();
}
} finally {
manager.stop();
}
}