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 шт):

Автор решения: cyadvert

Вам придется делать отдельный запрос в 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 Вам нужно будет подработать, чтобы считать книги только определенного издательства...
Но это уже Вы сами. Или добавьте больше информации по структуре Ваших таблиц.

→ Ссылка