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

南京优质网站建设方案qq星是哪个公司的产品

南京优质网站建设方案,qq星是哪个公司的产品,海外贸易网站,个人如果做网站赚钱文章目录 1. 触发器是什么#xff1f;2. 触发器的优缺点3. 触发器的类型3.1 INSERT触发器3.2 UPDATE触发器3.3 DELETE触发器 4. 触发器的相关语法4.1 创建触发器4.2 查看触发器4. 删除触发器 1. 触发器是什么#xff1f; 定义#xff1a;MySQL 的触发器和存储过程一样… 文章目录 1. 触发器是什么2. 触发器的优缺点3. 触发器的类型3.1 INSERT触发器3.2 UPDATE触发器3.3 DELETE触发器 4. 触发器的相关语法4.1 创建触发器4.2 查看触发器4. 删除触发器 1. 触发器是什么 定义MySQL 的触发器和存储过程一样都是嵌入到 MySQL 中的一段程序是 MySQL 中管理数据的有力工具。通过对数据表的相关操作来触发、激活从而实现执行。比如当对 student 表进行操作 INSERT DELETE 或 UPDATE时就会激活它执行。作用触发器与数据表关系密切主要用于保护表中的数据。特别是当有多个表具有一定的相互联系的时候触发器能够让不同的表保持数据的一致性、日志记录 , 数据校验等操作。 2. 触发器的优缺点 触发器的优点如下 触发器的执行是自动的当对触发器相关表的数据做出相应的修改后立即执行。触发器可以实施比 FOREIGN KEY 约束、CHECK 约束更为复杂的检查和操作。触发器可以实现表数据的级联更改在一定程度上保证了数据的完整性。 触发器的缺点如下 使用触发器实现的业务逻辑在出现问题时很难进行定位特别是涉及到多个触发器的情况下会使后期维护变得困难。大量使用触发器容易导致代码结构被打乱增加了程序的复杂性如果需要变动的数据量较大时触发器的执行效率会非常低。 3. 触发器的类型 在实际使用中 MySQL 所支持的触发器有三种 INSERT 触发器、 UPDATE 触发器和 DELETE 触发器。 使用别名OLD和NEW来引用触发器中发生变化的记录内容这与其他的数据库是相似的。现在触发器还只支持行级触发不支持语句级触发。 触发器类型NEW 和 OLDINSERT 型触发器NEW 表示将要或者已经新增的数据UPDATE 型触发器OLD 表示修改之前的数据 , NEW 表示将要或已经修改后的数据DELETE 型触发器OLD 表示将要或者已经删除的数据 3.1 INSERT触发器 在 INSERT 语句执行之前或之后响应的触发器使用 INSERT 触发器需要注意以下几点 更多操作在 INSERT 触发器代码内可引用一个名为 NEW不区分大小写的虚拟表来访问被插入的行。 在 BEFORE INSERT 触发器中 NEW 中的值也可以被更新即允许更改被插入的值只要具有对应的操作权限。 对于 AUTO_INCREMENT 列 NEW 在 INSERT 执行之前包含的值是 0在 INSERT 执行之后将包含新的自动生成值。 3.2 UPDATE触发器 在 UPDATE 语句执行之前或之后响应的触发器使用 UPDATE 触发器需要注意以下几点 在 UPDATE 触发器代码内可引用一个名为 NEW不区分大小写的虚拟表来访问更新的值。在 UPDATE 触发器代码内可引用一个名为 OLD不区分大小写的虚拟表来访问 UPDATE 语句执行前的值。在 BEFORE UPDATE 触发器中NEW 中的值可能也被更新即允许更改将要用于 UPDATE 语句中的值只要具有对应的操作权限。OLD 中的值全部是只读的不能被更新。 注意当触发器设计对触发表自身的更新操作时只能使用 BEFORE 类型的触发器AFTER 类型的触发器将不被允许。 3.3 DELETE触发器 DELETE 语句执行之前或之后响应的触发器使用 DELETE 触发器需要注意以下几点 在 DELETE 触发器代码内可以引用一个名为 OLD不区分大小写的虚拟表来访问被删除的行。 OLD 中的值全部是只读的不能被更新。 总体来说触发器使用的过程中MySQL 会按照以下方式来处理错误。 对于事务性表如果触发程序失败以及由此导致的整个语句失败那么该语句所执行的所有更改将回滚对于非事务性表则不能执行此类回滚即使语句失败失败之前所做的任何更改依然有效。若 BEFORE 触发程序失败则 MySQL 将不执行相应行上的操作。若在 BEFORE 或 AFTER 触发程序的执行过程中出现错误则将导致调用触发程序的整个语句失败。仅当 BEFORE 触发程序和行操作均已被成功执行MySQL 才会执行 AFTER 触发程序。 4. 触发器的相关语法 4.1 创建触发器 在 MySQL 5.7 中可以使用 CREATE TRIGGER 语句创建触发器语法格式如下 CREATE 触发器名 BEFORE | AFTER INSERT | UPDATE | DELETE ON 表名 FOR EACH Row触发器主体触发器名 触发器的名称触发器在当前数据库中必须具有唯一的名称。如果要在某个特定数据库中创建名称前面应该加上数据库的名称。 INSERT | UPDATE | DELETE 触发事件用于指定激活触发器的语句的种类。 注意三种触发器的执行时间如下。 INSERT将新行插入表时激活触发器。例如INSERT 的 BEFORE 触发器不仅能被 MySQL 的 INSERT 语句激活也能被 LOAD DATA 语句激活。DELETE 从表中删除某一行数据时激活触发器例如 DELETE 和 REPLACE 语句。UPDATE更改表中某一行数据时激活触发器例如 UPDATE 语句。 BEFORE | AFTER BEFORE 和 AFTER触发器被触发的时刻表示触发器是在激活它的语句之前或之后触发。若希望验证新数据是否满足条件则使用 BEFORE 选项若希望在激活触发器的语句执行之后完成几个或更多的改变则通常使用 AFTER 选项。 表名 与触发器相关联的表名此表必须是永久性表不能将触发器与临时表或视图关联起来。在该表上触发事件发生时才会激活触发器。同一个表不能拥有两个具有相同触发时刻和事件的触发器。例如对于一张数据表不能同时有两个 BEFORE UPDATE 触发器但可以有一个 BEFORE UPDATE 触发器和一个 BEFORE INSERT 触发器或一个 BEFORE UPDATE 触发器和一个 AFTER UPDATE 触发器。 触发器主体 触发器动作主体包含触发器激活时将要执行的 MySQL 语句。如果要执行多个语句可使用 BEGIN…END 复合语句结构。 FOR EACH ROW 一般是指行级触发对于受触发事件影响的每一行都要激活触发器的动作。例如使用 INSERT 语句向某个表中插入多行数据时触发器会对每一行数据的插入都执行相应的触发器动作。 案例1插入数据触发器 create trigger tb_user_insert_trigger after insert on tb_user for each row begininsert into user_logs(id, operation, operate_time, operate_id, operate_params) VALUES(null, insert, now(), new.id, concat(插入的数据内容为:id,new.id,,name,new.name, , phone, NEW.phone, , email, NEW.email, ,profession, NEW.profession)); end; 案例2修改触发器 create trigger tb_user_update_trigger after update on tb_user for each row begininsert into user_logs(id, operation, operate_time, operate_id, operate_params) VALUES(null, update, now(), new.id,concat(更新之前的数据: id,old.id,,name,old.name, , phone,old.phone, , email, old.email, , profession, old.profession, | 更新之后的数据: id,new.id,,name,new.name, , phone,NEW.phone, , email, NEW.email, , profession, NEW.profession)); end;案例3删除触发器 create trigger tb_user_delete_trigger after delete on tb_user for each row begininsert into user_logs(id, operation, operate_time, operate_id, operate_params) VALUES(null, delete, now(), old.id,concat(删除之前的数据: id,old.id,,name,old.name, , phone,old.phone, , email, old.email, , profession, old.profession)); end;4.2 查看触发器 在 MySQL 中可以通过 SHOW TRIGGERS 语句来查看触发器的基本信息语法格式如下 SHOW TRIGGERS;在 MySQL 中所有触发器的信息都存在 information_schema 数据库的 triggers 表中可以通过查询命令 SELECT 来查看具体的语法如下 SELECT * FROM information_schema.triggers WHERE trigger_name 触发器名;查看所有的触发器: SELECT * FROM information_schema.triggers4. 删除触发器 使用 DROP TRIGGER 语句可以删除 MySQL 中已经定义的触发器。 DROP TRIGGER [ IF EXISTS ] [数据库名] 触发器名
http://www.pierceye.com/news/91573/

相关文章:

  • 九牛科技网站开发微信营销小型网站建设步骤
  • 分类信息系统网站模板口碑好的网站建设多少钱
  • 米粒网站建设网站开发项目费用预算
  • 12380网站建设的意见建议公司网站维护和更新属于哪个部门
  • 公众号做微网站吗做国外网站的站长
  • 现在网站优化app程序开发定制
  • 德阳网站怎么做seowordpress app 插件
  • 水文化建设网站网站排名优化公司哪家好
  • 网站图片的暗纹是怎么做的做家教中介 不建网站怎么做
  • 学校网站建设价格明细表淮安网站网站建设
  • 怎样做代刷网站长电子商务网站开发费用入账
  • 网站健设推广产品多少钱商业网站开发的实训小结怎么写
  • 优秀的网站建设推荐做百度推广是网站好还是阿里好
  • 响应式网站开发费用做不规则几何图形的网站
  • 西安网站建设优化集团门户网站建设不足
  • 深圳建网站的公企业做网站有什么用
  • wordpress插件 2017南宁seo排名外包
  • 在淘宝上开网店的详细步骤丹东网站seo
  • 网站建设外包公司招聘发帖子有哪些app平台
  • 网站风格发展趋势快设计
  • 稳定的网络建站咨询电话正规网站建设咨询电话
  • 请人代做谷歌外贸网站做购彩网站是怎么盈利的
  • 网站内链怎么删除wordpress如何下载
  • 深圳网站公司有了域名搭建网站详细步骤
  • 主机宝 建设网站怎么知道网站哪家公司做的
  • 1元做网站方案城乡建设住房建设厅官方网
  • 厦门网站网页设网页素材html
  • 活字格能开发企业网站吗商品门户网站解决方案
  • 网站虚拟主机内存不足能不能链接美工怎么做网站效果图
  • 网站版建设软件开发培训班有哪些