我有一个邮件队列表和一个电子邮件黑名单表。对邮件队列表的插入是在整个代码中以数字(字面意思,我计算)的位置进行的。我的任务是阻止黑名单上的人发送电子邮件。如果地址在黑名单表中,我可以在拒绝插入的邮件队列表上触发吗?
是否有更好的方法可以做到这一点?
答案 0 :(得分:3)
从书籍“High Performance MySQL Second Edition”:
有时你甚至可以解决这个问题 对于每行限制。罗兰布曼 发现ROW_COUNT()总是报告 1触发器内部,除了 BEFORE触发器的第一行。您可以 用它来防止触发器的代码 从执行受影响的每一行 并且每个语句只运行一次。 它与per语句不同 触发器,但它是一种有用的技术 用于在BEFORE之前模拟每个语句 在某些情况下触发。这种行为 可能实际上是一个会得到的错误 在某些时候固定,所以你应该使用 它小心翼翼,并确认它仍然存在 升级服务器时有效。 这是一个如何使用它的示例 劈:
CREATE TRIGGER fake_statement_trigger
BEFORE INSERT ON sometable
FOR EACH ROW
BEGIN
DECLARE v_row_count INT DEFAULT ROW_COUNT( );
IF v_row_count <> 1 THEN
-- Your code here
END IF;
END;