MySQL语句级别触发器问题

时间:2017-09-27 17:30:28

标签: mysql

给定触发器中的问题似乎是什么?

@media all and (max-width:767px) {

#top-menu {
  display: block!important;
  margin: 0;
  text-align: center;
  background: none;
}
.main-navigation li {
    display: inline-block;
    margin: 0 10px;
}
button.menu-toggle {
  display: none!important;
}

}

我的表格“new”的结构是:

delimiter $$

create trigger t3
before update on new
if new.points < 0
begin
Update new set new.points = 0 where id=new.id;
endif;
end $$

1 个答案:

答案 0 :(得分:1)

自从我做了一个MySQL触发器以来已经有一段时间了,但是这样的事情应该很接近:

DELIMITER $$

CREATE TRIGGER t3 BEFORE UPDATE ON `new`
FOR EACH ROW
BEGIN
IF NEW.points < 0
THEN
    SET NEW.points = 0;
END IF;
END$$

DELIMITER ;

注意:

  • 您省略了FOR EACH ROW
  • &#34;新&#34;是一个关键字,所以可能会导致一些歧义;因为它专门用于触发器使触发器难以读取。我用'字符和关键字使用的大写字母来分隔表名。
  • 您无法更新(或以任何方式真正修改)触发器所在的表格;仅处理正在处理的行的值。这就是UPDATE更改为SET的原因,并且不需要WHERE子句来指定行。
  • BEGIN ... END我在技术上(可能)在这种情况下不需要;但如果触发器的主体有多个陈述,那就好了。

IF syntax

TRIGGER creation syntax

MySQL KEYWORDS