zoukankan      html  css  js  c++  java
  • mysql中的触发器和事务的操作

    触发器 语法

    创建触发器:

    CREATE TRIGGER trigger_name trigger_time trigger_event

                  ON tbl_name FOR EACH ROW trigger_stmt;

                  trigger_time是触发程序的动作时间。

    它能够是BEFORE或AFTER trigger_event指明了激活触发程序的语句的类型。

    trigger_event能够是下述值之中的一个:

    ·             INSERT:将新行插入表时激活触发程序,比如。通过INSERT、LOAD DATA和REPLACE语句。

    ·             UPDATE:更改某一行时激活触发程序,比如,通过UPDATE语句。

    ·             DELETE:从表中删除某一行时激活触发程序,比如。通过DELETE和REPLACE语句。

    样例:

              mysql-> create trigger test 

                        -> before update on table_name for each row 

                        -> update table_name  set  NEW.updateTime = NOW() where id=NEW.ID; 

            假设监測的表和更新的表是同一个   则能够省略为

      mysql-> create trigger test 

                        -> before update on table_name for each row 

                        -> set  NEW.updateTime = NOW() where id=NEW.ID; 


    删除触发器:

    DROP TRIGGER trigger_name;

    样例:

             mysql->drop trigger trigger_name;

    查看触发器:

    样例:

             mysql->desc triggers;

    或者

            mysql->select * from triggers where trigger_name='xxxxxx';


             mysql->show create  trigger  trigger_name;

    ======================================================================================

    事务的特征:ACID

    • Atomicity(原子性)
    • Consistency(稳定性,一致性)
    • Isolation(隔离性)
    • Durability(可靠性)

    注意:事务仅仅针对对数据数据产生影响的语句有效。

    show engines //查看mysql锁支持的数据引擎。

    MyISAM不支持事物,InnoDB支持事物。

    默认情况下,MySQL将以自己主动提交模式执行。这意味着没一条小命令都将当做一个仅仅有一条命令的事物来执行。

    假设要让mysql支持支持事务。仅仅须要改动数据引擎(alter table person type=INNODB)。

    使用start transaction或者begin命令来开启一个事物,使用commit,或者rollback来结束事物。

    事物的结束:事物除了commit,rollback会结束外,使用DDL或者DCL语句也会结束。

    保存点:通过保存点机制:用户能够在事物里用savepoint name命令设置一些保存点,以后用户在使用rollback to savepoint name结束事物时,name之前的数据保存,之后的数据不保存。

    mysql使用事务的keyword

    • begin //打开一个事务。
    • commit //提交到数据库。
    • rollback //取消操作。

    • savepoint //保存。部分取消,部分提交。
    • alter table person type=INNODB //改动数据引擎。

    演示样例:

    1. begin  
    2.  
    3. update person set name='efgh' where id =10 
    4.  
    5. select * from person  
    6.  
    7. rollback  
    8.  
    9. select * from person 

    演示样例:

    1. alter table person type=INNODB 
    2.  
    3. begin  
    4.  
    5. update person set name='efgh' where id =10 
    6.  
    7. select * from person  
    8.  
    9. commit  
    10.  
    11. select * from person  
    12.  
    13. begin  
    14.  
    15. delete from person where id=21 
    16.  
    17. update person set name='efgh' where id =10 
    18.  
    19. commit/rollback 

    针对上面部分提交,必须用到保存点。

    事务保存点注意:

    1.仅仅能取消到某个保存点 rollback to savepoint p1。

    2.不能提交某个保存 commit to savepoint p2//错误写法。

    3.最后commit 把未取消的保存点去不提交到数据。

    事务保存点使用样例:

    1. begin;  
    2.  
    3. update score set score=40 where scoreid=1;  
    4.  
    5. savepoint s1;  
    6.  
    7. update score set score=50 where scoreid=2;  
    8.  
    9. select * from score;  
    10.  
    11. rollback to savepoint s1;  
    12.  
    13. select * from score;  
    14.  
    15. commit。 
  • 相关阅读:
    Kubernetes 用户流量接入方案
    给Nginx配置日志格式和调整日期格式
    唇亡齿寒,运维与安全
    Nginx记录用户请求Header到access log
    Kubernetes中利用Kubectl set 让Deployment更新镜像
    故障管理:故障定级和定责
    使用 Elastic 技术栈构建 Kubernetes全栈监控
    故障管理:鼓励做事,而不是处罚错误
    故障管理:谈谈我对故障的理解
    稳定性实践:开关和预案
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5085189.html
Copyright © 2011-2022 走看看