zoukankan      html  css  js  c++  java
  • 触发器、订单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测试解决问题。”
    软件工程说:“咱们还是应该把车推回山顶再开下来,看看问题是否重复发生。”

  • 相关阅读:
    13之容器资源需求、资源限制及Metricserver(Heapster)
    04K8S之pod控制器
    08K8S之k8s认证和serviceaccount
    07K8S之Statefulset控制器
    [Database] Mongodb 分片集群
    IIS 配置.svc的MIME映射
    当前标识(IIS APPPOOL\ASP.NET v4.0)没有对“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files”的写访问权限 解决方案
    Kubernetes Dashboard 安装
    存储服务 使用S3存储桶上传文件以及使用CLI来访问S3服务
    Django使用pdfkit生成PDF文件提供下载
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3028602.html
Copyright © 2011-2022 走看看