【发布时间】:2017-11-12 08:23:15
【问题描述】:
DROP TRIGGER IF EXISTS `examcnpm`.`users_BEFORE_DELETE`;
DELIMITER $$
USE `examcnpm`$$
CREATE DEFINER = CURRENT_USER TRIGGER `examcnpm`.`users_BEFORE_DELETE` BEFORE DELETE ON `users` FOR EACH ROW
BEGIN
declare id int;
select id= (select userid from deleted);
delete from Result where Result.userid=id;
delete u from Users as u inner join deleted as r on u.userid=r.userid
where u.userid=id;
END$$
DELIMITER ;
【问题讨论】:
-
我希望看到对 OLD 的引用。删除触发器中的值。
-
我不明白??
-
您的第一个问题是导致错误的 select id= (select userid from deleted)。如果您不理解我对 OLD 的引用。那么您需要专门查看触发器的文档“在触发器主体中,OLD 和 NEW 关键字使您能够访问受触发器影响的行中的列。 OLD 和 NEW 是 MySQL 对触发器的扩展;它们不区分大小写' (dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html)。
-
谢谢,但这是触发 SQL Server,所以如何从语法 SQL 转移到语法 mysql
-
在 mysql 中,您无法操作导致触发器触发的表。删除用户试图做什么?