Установка генератора на конкретное значение

1

Я преобразовываю базу данных, и мне нужно установить генератор в значение до генерации новых чисел.

Скажем, генератор называется gtest. Я пробовал следующее:

PreparedStatement nrps = csource.prepareStatement("alter sequence gtest restart with 100");

а также

PreparedStatement nrps = csource.prepareStatement("set gopdracht to 100");

Вариант 1 дает мне недействительный синтаксис, а опция 2 дает системную переменную unkown.

Что я делаю не так?

Теги:
jdbc
firebird

1 ответ

1
Лучший ответ

Я начинаю подозревать, что вы используете соединение с базой данных без 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();
    }
}
  • 0
    Вы абсолютно правы в своем комментарии. У меня случайно было соединение ctarget с исходной базой данных MySql. Проблема решена! Спасибо за вашу обширную помощь. Bedankt.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню