powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по Derby
4 сообщений из 4, страница 1 из 1
Вопрос по Derby
    #34125412
А.Гриневич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени!

Скажите плиз, как создать последовательность?

Спасибо.
...
Рейтинг: 0 / 0
Вопрос по Derby
    #34126399
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кажется их там нет, но есть разные методы получить генератор оторванный от таблицы (если тебе нужен генератор, связанный с таблицей, то это делается легко и непринужденно (чуть ниже, где описывается создание таблицы)).
Прочитай тут
...
Рейтинг: 0 / 0
Вопрос по Derby
    #34515077
alx3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулся с проблемой: есть база на Postgre, в ней есть 2 таблицы, которые инкрементятся от одной последовательности. Доступ в базу прямой без hibernate. Данные кладуться так, что id не указывается:
Код: plaintext
insert into tab1(val) values('...')
Перевожу это дело на Derby - полный затык, все перепробовал.
Может кто-нить успешно решал проблему?
...
Рейтинг: 0 / 0
Вопрос по Derby
    #34516993
alx3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всего сутки проб и ошибок - и проблема решена!))
Приведу решение (может кому будет интересно). Таблицы tab2 и tab3 инкрементим от одной последовательности.
Таблицы:
Код: plaintext
1.
2.
3.
4.
5.
create table tab2(
id integer primary key generated always as identity,
val varchar( 50 ));
create table tab3(
id integer primary key generated always as identity,
val varchar( 50 ));
Процедура, которая делает рестарт генератора таблицы с указанного значения:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 public   static   void  restartGenerator(String tableName,  int  restartValue) {
	 try  {
		Connection conn = DriverManager
				.getConnection("jdbc:derby:c:/Derby/database/try");
		Statement stmt = conn.createStatement();
		StringBuilder query =  new  StringBuilder();
		query.append("alter table ");
		query.append(tableName);
		query.append(" alter column id restart with ");
		query.append(restartValue +  1 );
		System.out.println("query: " + query.toString());
		stmt.execute(query.toString());
		conn.close();
	}  catch  (SQLException e) {
		e.printStackTrace();
	}
}
Код: plaintext
1.
2.
3.
4.
create procedure restart_generator(
	in tablename varchar( 100 )
	, in restart_value integer
) parameter style java language java
external name 'org.degree.derby.DerbyProcedures.restartGenerator';
Триггеры на каждую таблицу, дергающие эту процедуру:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
create trigger tab2_id_trigger after insert on tab2
referencing  new  as new_row
 for  each row mode db2sql
call restart_generator('tab3',new_row.id);

create trigger tab3_id_trigger after insert on tab3
referencing  new  as new_row
 for  each row mode db2sql
call restart_generator('tab2',new_row.id);
Скорость пока не проверял, думаю потеря будет не особо большая.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по Derby
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]