Как я могу получить значение текущей удаленной строки в триггере Sql и обновить другую таблицу с данными удаленной строки - PullRequest
0 голосов
/ 28 ноября 2018

Я запускаю триггер SQL всякий раз, когда пользователь удаляет данные из таблицы. Я хочу обновить другую таблицу перед удалением текущих данных. Я не могу получить текущие удаленные данные строк.Как я могу получить содержимое текущих удаленных данных в триггере SQL.

CREATE TRIGGER `before_insert_money` BEFORE DELETE ON `payment`
  FOR EACH ROW BEGIN
    DECLARE TEMP INT;
    SELECT   OLD.user_id  into TEMP      
    FROM OLD;

    UPDATE user set monthly_limit=TEMP where id=1;

 END

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

это будет работать так, как вы хотели, чтобы контент был удален:

SELECT * FROM NS_WORDS;

mani
nikhil
sugandh
mining
_lkdnsad
_lkdndsadnjas
_lk
_ja
_ls
_lsa

create table deleted_vals(a varchar(20));

CREATE OR REPLACE TRIGGER trigger_deleted_vals
BEFORE DELETE
   ON NS_WORDS
   FOR EACH ROW
DECLARE
BEGIN
INSERT INTO deleted_vals VALUES(:old.a);
END;
/

delete from NS_WORDS where rownum=1;

SELECT * FROM deleted_vals;

mani

for your table it would be like:

    CREATE TRIGGER before_insert_money
    BEFORE DELETE ON payment
    FOR EACH ROW 
    BEGIN

    UPDATE user set monthly_limit=:old.user_id where id=1;

 END;
 /
0 голосов
/ 28 ноября 2018

Вам просто нужно сослаться на OLD.userid вместо сохранения в другой переменной TEMP.Кроме того, нет таблицы OLD, которую можно использовать в предложении FROM.Вам просто нужно использовать OLD.<column name>, чтобы использовать значение определенного столбца для удаляемой строки.

DELIMITER $$
CREATE TRIGGER `before_insert_money` BEFORE DELETE ON `payment`
  FOR EACH ROW BEGIN

    UPDATE user set monthly_limit = OLD.user_id where id=1;

  END $$
DELIMITER ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...