今天用MySql做数据库书上的触发器实验,想着两者差异应该不是太大,就找了一份网上的简单教程,结果看来差异还是有的,至少在触发器语法上。
建立触发器代码如下:
create trigger after_change after insert on student -> for each row -> select * from student;
第一次出错信息: Not allowed to return a result set from a trigger。
信息提示MySql触发器不能返回结果集,虽然SQL server教材上好像可以。本来是很简单的,直接百度寻求解决方法就可以知道可以使用变量存储结果,具体怎么办以后再看。然而我直接在select语句上下加上了begin、end。如下:
create trigger after_change after insert on student -> for each row
-> begin -> select * from student;
-> end; //这行没有打出来
结果又出现了第二个错误:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ” at line 5
这个时候是因为另一个东西:delimiter 这个命令用来修改我们在命令行中写入命令的结束标志,默认是 ; (分号),但是如果我们的命令中有一个以上的分号的话,就会出错。这时候用delimiter + <某个符号>那么以后命令行就会以这个符号作为结束标志。一般我们用delimiter + $$ 设置, 两个美元符号。以后分号就不是结束标志了,$$才是。
例:
select * from course; -> $$
我的github: http://cstlrx.github.io/