如何在 Sql 触发器中获取当前删除的行的值并使用已删除的行数据更新另一个表

Avi*_*ana 5 mysql sql

每当用户从表中删除数据时,我都会触发 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
Run Code Online (Sandbox Code Playgroud)

Mad*_*iya 1

您只需要引用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 ;
Run Code Online (Sandbox Code Playgroud)