2019独角兽企业重金招聘Python工程师标准>>>
最近有一个需求需要使用mysql的触发器来实现,于是就开始编写触发器的创建sql语句,在网上找了一下创建触发器的说明,按照样子来编写,竟然说有语法错误,后来在mysql官方的文档资料里面找到了正确的语法结构,然后就创建成功了。
由于网上找到的大多数都是错误的,在这里就只是大概说一下网上的都是什么样子,看看就行了
复制代码
1
2
3
4
5create trigger test before update on test for each row update test set NEW.updateTime = NOW() where id=NEW.ID; END
注意,最后有一个“END”,但是前面却没有“begin”,其实,出错就是这个end造成的。
我们访问mysql官方的文档,搜索“trigger”很容易就看到关于触发器的说明了
http://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html
这个文档是关于5.7的,但是对于触发器创建语法来说,应该没有什么区别,在开头就给出了创建的语法举例
复制代码
1
2
3
4
5
6mysql> CREATE TABLE account (acct_num INT, amount DECIMAL(10,2)); Query OK, 0 rows affected (0.03 sec) mysql> CREATE TRIGGER ins_sum BEFORE INSERT ON account -> FOR EACH ROW SET @sum = @sum + NEW.amount; Query OK, 0 rows affected (0.06 sec)
由于这是一个简单的语句,所以没有更改行结束符,如果要更改行结束符也是很容易。
后面还有在需要执行很多句语句的时候的写法,这个时候就是需要“begin”和“end”的,它们是成对出现的
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20CREATE TABLE test1(a1 INT); CREATE TABLE test2(a2 INT); CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY); CREATE TABLE test4( a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b4 INT DEFAULT 0 ); delimiter | CREATE TRIGGER testref BEFORE INSERT ON test1 FOR EACH ROW BEGIN INSERT INTO test2 SET a2 = NEW.a1; DELETE FROM test3 WHERE a3 = NEW.a1; UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1; END; | delimiter ;
然后我便携了我自己的创建触发器的sql语句,执行是OK的
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19DROP TABLE IF EXISTS `t_blog`; CREATE TABLE `t_blog` ( `b_id` int(16) NOT NULL AUTO_INCREMENT, `title` varchar(64) NOT NULL, `content` longtext NOT NULL, `create_time` datetime NOT NULL, `tags` varchar(64) NOT NULL, `uni_uri` varchar(64) NOT NULL, PRIMARY KEY (`b_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1000000001 DEFAULT CHARSET=utf8; DROP TRIGGER IF EXISTS `tri_blog_default_create_time`; DELIMITER ;; CREATE TRIGGER `tri_blog_default_create_time` BEFORE INSERT ON `t_blog` FOR EACH ROW set NEW.create_time = NOW(); ;; DELIMITER ;
转载于:https://my.oschina.net/songxinqiang/blog/737334
最后
以上就是耍酷小馒头最近收集整理的关于mysql触发器创建语法的全部内容,更多相关mysql触发器创建语法内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复