powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / автоиндексирование нескольких таблиц
5 сообщений из 5, страница 1 из 1
автоиндексирование нескольких таблиц
    #32069346
Denis_M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ, помогите плиз, решить одну проблемму.
1) Есть несколько таблиц с уникальным первичным ключом в каждой, необходимо с помощью триггера для каждой таблице реализовать следующее действие: при вставке новой строки (одиночной) в таблицу триггер присваивает первичному ключу уникальный номер, но этот номер должен быть взят из определенного массива чисел (очень большого), затем при заполнении следующей таблице из этого же массива берётся ещё один номер. Таким образом в каждой таблице будут свои уникальные номера не повторяющиеся с другими таблицами.
2) Имеется итоговая таблица в которой три столбца - составной ключ. Первый столбец ввожу я, второй тоже я - уникальный номер строки из пункта 1, а третий столбец должен заполнить сам триггер, в нём должно находится имя таблицы которому принадлежит данный уникльный номер из второго столбца.
К сожалению мои познания в SQL ещё очень малы, поэтому буду очень признателен за рабочее решение данной задачи.
...
Рейтинг: 0 / 0
автоиндексирование нескольких таблиц
    #32069358
ShgGena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используй SEQUENCE как генератор первичных ключей.
...
Рейтинг: 0 / 0
автоиндексирование нескольких таблиц
    #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
автоиндексирование нескольких таблиц
    #32070055
Guester
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не
Код: plaintext
1.
Select posledovat.Nextval INTO :new.ID_валюты 
From Валюта; 

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


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