重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
方法/步骤
10年积累的网站设计制作、成都网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有荣县免费网站建设让你可以放心的选择与我们合作。
首先,我们需要确定自己的Mysql数据库的版本,因为my sql数据库是从5.0.2版本才开始支持触发器的。
我推荐大家在电脑的dos命令界面中输入 mysql --version,来获取mysql的版本号,注意version的两个横线和之前的mysql是有一个空格的。
上一步获取了我们的mysql版本号,这一不我们就开始建立触发器了。我采用的以视图加代码的方式创建,我们在数据表中找到要执行删除操作的表,然后右键设计表
这样我们就打开了表的设计页面,可以看到有一个触发器选项卡,我们点击“触发器”
可以看到对应的选项,我们在名里面添加我们需要新建的触发器的名字,在触发选项中选择before或者after,然后在插入、更新、删除三个选项中勾选一个。
这样我们就建立了一个名为“datri”的触发器,在删除操作执行之后触发
然后我们在下面的定义下面的框中输入我们需要执行的操作。然后点击sql预览,可以看到整个触发器的代码
最后就是保存了,由于我们做的是触发器,保存之后,在执行删除操作时,这个触发器才相当于 被执行。
这个你只能写sql 语句去数据库里面去查询触发器是否存在了 不是有个 if exists(SELECT * FROM information_schema.`TRIGGER `;) drop TRIGGER room_kq_detail_times
这样是会报不允许返回结果集的错误的,我也查了下资料,也有人跟你提出相同的疑问,这本书我是没看过,可能当时作者自己也没实践,书中的内容不一定是对的。
看它的目的是想返回auto_increment的值,可以这样做
触发器定义改成 into @
CREATE TRIGGER neworder AFTER INSERT ON orders FOR EACH ROW
SELECT NEW.order_num INTO @o_num;
插入值的时候加个select @就可以返回auto_increment值了。
INSERT INTO orders(order_date, cust_id) VALUES(Now(), 10001);
SELECT @o_num;
可以从information_schema架构下的系统表查看\x0d\x0a \x0d\x0a-- 查看约束\x0d\x0aSELECT * FROM information_schema.`TABLE_CONSTRAINTS`;\x0d\x0a \x0d\x0a-- 查看触发器\x0d\x0aSELECT * FROM information_schema.`TRIGGERS`;
可以从information_schema架构下的系统表查看
-- 查看约束
SELECT * FROM information_schema.`TABLE_CONSTRAINTS`;
-- 查看触发器
SELECT * FROM information_schema.`TRIGGERS`;