SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 13.05.2022 18:00:27

timhaX
Участник
Зарегистрирован: 13.05.2022
Сообщений: 1

помощь с триггером

доброго времени суток, подскажите как через триггер мне удалить введуную строку(inserted) при выполнении IF, т.е. перед return должна удалиться строка, которая ввелась в таблицу payment

CREATE TRIGGER ordersupdate
ON Payment
AFTER INSERT, UPDATE
AS
IF @@ROWCOUNT=0

 RETURN
IF EXISTS(
    SELECT
     *
    FROM Orders o
    JOIN inserted i ON o.order_sum >= o.summ
    WHERE
     i.order_id = o.id
  )
 (вот здесь нужна строчка удаляющая введенною строку в таблицу payment)
RETURN
SET NOCOUNT ON
BEGIN
UPDATE Orders

SET order_sum = o.order_sum + i.payment_sum
FROM Orders o JOIN
(SELECT order_id, SUM(payment_sum)payment_sum FROM inserted GROUP BY order_id) i
ON o.id=i.order_id
END

Неактивен

 

#2 14.05.2022 10:59:08

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5788

Re: помощь с триггером

1. сложно понять, т.к. у вас некорректный синтаксис, см https://dev.mysql.com/doc/refman/8.0/en … igger.html
2. RETURN не поддерживается в триггерах, используйте LEAVE
3. AFTER INSERT не может отменить вставку, используйте DEFORE INSERT

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson