当前位置: 首页 > news >正文

做外贸哪个网站好/国家新闻最新消息今天

做外贸哪个网站好,国家新闻最新消息今天,赣州做网站的公司哪家好,笔记本做系统哪个网站好【MySQL】触发器学习 MySQL手册中对触发器的定义是: 触发程序是与表有关的命名数据库对象,当表上出现特定事件时,将激活该对象。表必须是永久性表,不能将触发程序与临时表与视图关联起来。 相同触发程序动作时间和事件的给定表&am…
【MySQL】触发器学习

MySQL手册中对触发器的定义是:

  触发程序是与表有关的命名数据库对象,当表上出现特定事件时,将激活该对象。表必须是永久性表,不能将触发程序与临时表与视图关联起来。

  相同触发程序动作时间和事件的给定表,不能有两个触发程序。同一张表不能有两个before update(不同字段可写在一个trigger里面),但是可以同时有before update、after update或before insert。

语法:

DELIMITER $$CREATE/*[DEFINER = { user | CURRENT_USER }]*/TRIGGER `db`.`tri_name` BEFORE/AFTER INSERT/UPDATE/DELETEON `db`.`tb_name`FOR EACH ROW BEGIN#######command#######END$$DELIMITER ;

trgger_time:

  before/after

trigger_event:

  1.insert:insert、load data、replace可触发

  2.update:

  3.delete:delete、replace可触发

  对于insert into ..on duplicate update语法要注意

使用别名OLD和NEW,能够引用与触发程序相关的表中的列。OLD。col_name在更新或删除它之前,引用已有行中的列。NEW。col_name在更新它之后引用将要插入的新行或已有行的列。

 

使用OLD 和NEW关键字,能够访问受触发程序影响的行中的列(OLD 和NEW不区分大小写)。在INSERT 触发程序中,仅能使用NEW.col_name,没有旧行。在DELETE触发程序中,仅能使用OLD.col_name,没有新行。
在UPDATE 触发程序中,可以使用OLD.col_name来引用更新前的某一行的列,也能使用NEW.col_name来引用更新后的行中的列。
用OLD 命名的列是只读的。你可以引用它,但不能更改它。对于用NEW命名的列,如果具有SELECT权限,可引用它。在BEFORE触发程序中,如果你具有UPDATE 权限,可使用“SET NEW. col_name = value” 更改它的值。这意味着,你可以使用触发程序来更改将要插入到新行中的值,或用于更新行的值。

 

激活触发程序时,对于触发程序引用的所有OLD和NEW列,需要具有select权限,对于作为SET赋值目标的所有NEW列,需要具有UPDATE权限。

CREATE TRIGGER需要SUPER权限。

建表:

CREATE TABLE `test1`.`tri_test` (`a` int(1) DEFAULT NULL,`b` int(1) DEFAULT NULL)CREATE TABLE `test2`.`tri_test` (`a` int(1) DEFAULT NULL,`b` int(1) DEFAULT NULL)

示例:跨库两表insert数据同步触发器

DELIMITER $$CREATE/*[DEFINER = { user | CURRENT_USER }]*/TRIGGER `test1`.`tri_test.insert.a` AFTER INSERTON `test1`.`tri_test`FOR EACH ROW BEGININSERT INTO  test2.tri_test VALUES (new.a,new.b);END$$DELIMITER ;

 

示例:跨库两表update数据同步触发器

DELIMITER $$CREATE/*[DEFINER = { user | CURRENT_USER }]*/TRIGGER `test1`.`tri_test.insert.a` AFTER INSERTON `test1`.`tri_test`FOR EACH ROW BEGINIF new.b!=old.bTHENUPDATE test2.tri_test SET  test2.tri_test.b=new.bWHERE  test2.tri_test.a=old.a ;END IF;END$$DELIMITER ;

 例:

delimiter //
CREATE TRIGGER upd_check BEFORE UPDATE ON account
FOR EACH ROW
BEGINIF NEW.amount < 0 THENSET NEW.amount = 0;ELSEIF NEW.amount > 100 THENSET NEW.amount = 100;END IF;
END;//
delimiter ;

 注意:

触发程序不能调用将数据返回客户端的存储程序,也不能使用采用CALL语句的动态SQL (允许存储程序通过参数将数据返回触发程序)。
触发程序不能使用以显式或隐式方式开始或结束事务的语句,如START TRANSACTION、COMMIT 或ROLLBACK。

 

 

 

posted on 2014-03-07 18:21 poorX 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/jiangxu67/p/3586993.html

http://www.jmfq.cn/news/4908439.html

相关文章:

  • 公司做网站需要准备什么材料/微信朋友圈广告在哪里做
  • 郑州网站建设 云极/seo优缺点
  • 新乡网站建设哪家正规/杭州seo排名收费
  • 网站模板如何使用/搜狗网站提交入口
  • 牌具做网站/百度怎么推广网站
  • 做电影网站只放链接算侵权吗/怎样把广告放到百度
  • 合肥网站开发公司电话/写软文的app
  • 网站上传后没有后台/搜索引擎seo优化
  • 网站设计与管理的软件/seo基本步骤
  • 嘉兴模板建站定制网站/网站制作模板
  • b站推出的短视频app哪个好/网站seo优化公司
  • 苏州seo优化公司/网络优化seo薪酬
  • 网站分类 维护/广州最新消息
  • 网站建设模板推广/bt种子磁力搜索引擎
  • 长沙市住房和城乡建设委员会门户网站/关键词排名优化报价
  • 宁夏网站建设优化/竞价托管外包费用
  • 上海建网站开发公/营销型网站建设案例
  • web网站开发里怎么切换界面/优秀营销软文100篇
  • 郑州网站专业制作/网站推广的100种方法
  • 天津市门户网站建设要求/四川餐饮培训学校排名
  • 物流网站毕业设计论文/宁波如何做抖音seo搜索优化
  • 网站建设的建议和意见/近期国内新闻热点事件
  • 滨州做网站建设/今日国内新闻10则
  • 承德网站建设/广州做网站的公司哪家好
  • 深圳建设企业网站/谷歌网站优化推广
  • 创建企业营销网站包括哪些内容/郑州网络营销公司哪个好
  • 深圳松岗做网站/最新新闻热点事件
  • 怎样推广自己做的网站/白帽seo是什么
  • 网站开发实训报告/怎么做线上销售
  • 网页设计就业/成都搜狗seo