INSERT автосгенерированных данных через триггер
Есть таблица halls, она имеет поля max_row_number и max_seat_number.
Есть таблица seats, она имеет row_number, seat_number и hall_id.
Необходимо создать триггер:
При добавлении записи в halls создавать на каждое место запись в seats
Например: при создании зала со значением кол-ва рядов 5 и кол-ва мест в ряду 5, должно создаться 25 записей на каждое место зала:
зал1, ряд1, место1
зал1, ряд1, место2
и т.д
Ответы (1 шт):
Основная задача - размножить строки в нужном количестве. Для этого удобно использовать рабочую таблицу с порядковыми номерами (такая таблица достаточно часто используется в разных ситуациях). Номеров в таблице должно быть достаточно на все случаи жизнию
create table seqnum(X int not null);
-- Первые 8 записей
insert into seqnum values(1),(2),(3),(4),(5),(6),(7),(8);
-- И еще 512
select (s1.x-1)*64+(s2.x-1)*8+s3.x+8
from seqnum s1, seqnum s2, seqnum s3;
Запрос для генерации рядов и мест в них
insert into Таблица(зал, ряд, место)
select id-зала, A.x, B.x
from seqnum A, seqnum B
where A.x <= кол-во-рядов AND B.x <= кол-во-мест
Остается завренуть это в триггер с подстановкой нужного зала и количеств рядов/мест.