触发器、订单-MySql事物触发器(实例)-by小雨

在写这篇文章之前,xxx已经写过了几篇关于改触发器、订单-主题的文章,想要了解的朋友可以去翻一下之前的文章

    1,连接查询

    union 连接的是多个select 语句

    join 连接查询:

    当我们期望的结果不再一同张表上时,我们要需应用join连接查询

    语法:

    table1 join table2 on table1的某个字段 = table2的某个字段

    条件是 商品表中商品的类分id =  类分表中这个类分的id

 

 

    当查询语句中,多次应用某个表,或者这个表名特殊长的时候,我们议建给这个表添加一个名别

    mysql> selectgoods_name,shop_price,cat_name from ecs_goods as g join ecs_catego

    ry as c on g.cat_id = c.cat_id whereg.shop_price>=1000;

 

 

    join的类分:

    左连接查询 leftjoin:查询的结果是只要左边有的录记,都市表现,边右没有的表现为null

    右连接查询 rightjoin

    内连接查询 innerjoin : 查询的结果是两个表都有的据数

    

    

    事务:

    什么是事务?

    事务是逻辑上的一组操纵,成组这组操纵的各个单元,要不全都胜利要不全都失败,这个特性就是事务

    注意:mysql据数持支事务,但是求要必须是innoDB存储引擎

    决解这个问题:

    mysql的事务决解这个问题,因为mysql的事务特性,求要这组操纵,要不全都胜利,要不全都失败,这样就防止了某个操纵胜利某个操纵失败。利于据数的全安

 

    如何应用:

    (1)在行执sql语句之前,我们要开启事务 start transaction;

    (2)畸形行执我们的sql语句

    (3)当sql语句行执毕完,存在两种情况:

    1,全都胜利,我们要将sql语句对据数库成造的影响提交到据数库中,committ

       2,某些sql语句失败,我们行执rollback(滚回),将对据数库操纵赶忙撤销

    php代码:

    

    

    开启事务后,只要不行执commit,sql语句不会对实在的据数库成造影响

    只有行执commit后之,才会对实在据数库成造影响

 

    发触器:

    发触器是据数库的一个程序,他是用来监听着据数表的某个行为,一旦据数表的这个行为生发了,马上行执应相的sql语句

 

    发触器的语法结构:

    create trigger 发触器的名称 发触器件事 on 监听的表名 for eachrow 行为生发后行执的sql语句

 

    发触器件事成组:;两部分成组:

    发触器件事生发的时光-----是在监听的表的行为 after  before 用常的是after

    发触器行执的内容:增编削

    创立order 表的时候,要需注意,因为order在mysql中是一个关键字序排,为了防止错误的生发,我们可以添加反引号,明表这不是一个关键字

 

    如何应用发触器:

    例案研讨:

    一旦成生订单,对应的存库表要减去应相的据数

    (1)建商品表和订单表

    

    

    订单表

    

    

    (2)给订单表绑定发触器,一旦订单表增长订单,马上行执sql语句,将商品存库表减去应相的据数

    

    

    当初有个问题:

    每次下订单后,存库表都是减去应相的数量固定死的,但是我们的需求是:用户下几个订单,存库表减去几个存库

 

    如安在发触器中应用发触据数?

    什么是发触的据数:就是用户在订单表中买购的数量

    new 关键字代表新增长的数量,订单表中新下的订单数量

    old 关键字代表是旧的录记(从前的录记,取消的订单数量)

    new 的应用:

    

    

    old的应用:

    旧的从前的录记,之前买了几个商品,但是又不想要了,取消订单

    取消订单后,存库中要增长的应相的数量

    

    

    update中new 和 old的应用

    当初的需求是:

    之前买购了5个samsung机手,当初想买10个,要需新更订单表

    这个时候,发触器就要需监听着update这个行为

    先将之前下的订单撤销,再新重下订单

    

    

    发触器是什么?

    用来监听据数表的某个行为(insert,delete,update),一旦这个行为生发了,马上行执应相的sql语句

     

     

 

    删除发触器:

    drop trigger 发触器的名称

文章结束给大家分享下程序员的一些笑话语录: 据说有一位软件工程师,一位硬件工程师和一位项目经理同坐车参加研讨会。不幸在从盘山公路下山时坏在半路上了。于是两位工程师和一位经理就如何修车的问题展开了讨论。
硬件工程师说:“我可以用随身携带的瑞士军刀把车坏的部分拆下来,找出原因,排除故障。”
项目经理说:“根据经营管理学,应该召开会议,根据问题现状写出需求报告,制订计划,编写日程安排,逐步逼近,alpha测试,beta1测试和beta2测试解决问题。”
软件工程说:“咱们还是应该把车推回山顶再开下来,看看问题是否重复发生。”

posted @ 2013-04-18 15:26  坚固66  阅读(219)  评论(0编辑  收藏  举报