可以使用mysql触发器来阻止插入吗?

时间:2011-02-14 18:31:19

标签: mysql sql triggers

我有一个邮件队列表和一个电子邮件黑名单表。对邮件队列表的插入是在整个代码中以数字(字面意思,我计算)的位置进行的。我的任务是阻止黑名单上的人发送电子邮件。如果地址在黑名单表中,我可以在拒绝插入的邮件队列表上触发吗?

是否有更好的方法可以做到这一点?

1 个答案:

答案 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;