MySQL Как при создании триггера использовать столбцы с двух таблицы
При создании триггера должны использоваться два столбца из разных таблиц. Имеются две таблицы - заказы(p_orders) и издательство(p_publications). Суть триггера - когда количество заказанных копий(ordered_copies) превышает кол-во книг(count_of_books), должно ставиться максимальное кол-во книг, имеющихся у издательства.
create trigger ordcopies_notmore_count
before insert
on p_orders
for each row
if new.ordered_copies > count_of_books then
set new.ordered_copies = count_of_books;
end if;
Вопрос в том как сослаться на столбец из другой таблицы в этой части?
if new.ordered_copies > count_of_books then
set new.ordered_copies = count_of_books;
Ответы (1 шт):
Вам придется делать отдельный запрос в p_publications, который вернет count_of_books. А уже после эту переменную использовать в триггере.
Как-то так:
create trigger ordcopies_notmore_count
before insert
on p_orders
for each row
SELECT COUNT(book_id) INTO @countOfBooks FROM p_publications WHERE ... ;
if new.ordered_copies > @countOfBooks then
set new.ordered_copies = @countOfBooks;
end if;
Вопрос не совсем полный. Подразумеваю, что SELECT ... INTO ... FROM ... WHERE Вам нужно будет подработать, чтобы считать книги только определенного издательства...
Но это уже Вы сами. Или добавьте больше информации по структуре Ваших таблиц.