Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / автоиндексирование нескольких таблиц / 5 сообщений из 5, страница 1 из 1
19.11.2002, 02:51
    #32069346
Denis_M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
автоиндексирование нескольких таблиц
Народ, помогите плиз, решить одну проблемму.
1) Есть несколько таблиц с уникальным первичным ключом в каждой, необходимо с помощью триггера для каждой таблице реализовать следующее действие: при вставке новой строки (одиночной) в таблицу триггер присваивает первичному ключу уникальный номер, но этот номер должен быть взят из определенного массива чисел (очень большого), затем при заполнении следующей таблице из этого же массива берётся ещё один номер. Таким образом в каждой таблице будут свои уникальные номера не повторяющиеся с другими таблицами.
2) Имеется итоговая таблица в которой три столбца - составной ключ. Первый столбец ввожу я, второй тоже я - уникальный номер строки из пункта 1, а третий столбец должен заполнить сам триггер, в нём должно находится имя таблицы которому принадлежит данный уникльный номер из второго столбца.
К сожалению мои познания в SQL ещё очень малы, поэтому буду очень признателен за рабочее решение данной задачи.
...
Рейтинг: 0 / 0
19.11.2002, 08:12
    #32069358
ShgGena
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
автоиндексирование нескольких таблиц
Используй SEQUENCE как генератор первичных ключей.
...
Рейтинг: 0 / 0
20.11.2002, 02:23
    #32069905
Denis_M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
автоиндексирование нескольких таблиц
Спасибо за ответ.
С последовательность я вроде разобрался, но теперь стоит другая проблемма: Как можно присвоить новое значение этой последовательности столбцу таблицы. У меня пока такой вариант, но он не рабочий. :(
--Создаём последовательность
Create Sequence posledovat
Increment By 1
Start With 1
NoMaxValue
NoCycle;

--Создаём триггер
Create Trigger Dollar
Before Insert On Валюта
For Each Row
Begin
Select posledovat.Nextval INTO :new.ID_валюты
From Валюта;
END Dollar;
/

Так написано (про триггер) в примере, но естественно когда в таблице >= 2 строк, то этот триггер не работает, т.к. Select выделяет все строки. Поэтому ВОПРОС: как присвоить полученное значение из последовательности конкретному столбцу.
...
Рейтинг: 0 / 0
20.11.2002, 12:37
    #32070055
Guester
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
автоиндексирование нескольких таблиц
не
Код: plaintext
1.
Select posledovat.Nextval INTO :new.ID_валюты 
From Валюта; 

а
Код: plaintext
1.
Select posledovat.Nextval INTO :new.ID_валюты 
From dual; 
...
Рейтинг: 0 / 0
21.11.2002, 02:14
    #32070498
Denis_M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
автоиндексирование нескольких таблиц
Большое спасибо, разобрался.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / автоиндексирование нескольких таблиц / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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