zoukankan      html  css  js  c++  java
  • 存储过程 触发器 约束

    定义(定义时不能赋值):declare   @名   类型

    赋值:set (或select) @名=’需要赋给@名的值’

    存储过程:

    手动调用

    弊端是不容易迁移数据(迁移时迁表,存储时重写)

    格式:

    create  procedure  存储过程名(UP_表名_操作)

       行参(传递的行参)

    As

    Begin

       可定义变量(临时用的行参)

       语句

    End

    使用:

       存储过程名  行参

    例题:

    ALTER PROCEDURE [dbo].[BuyFruit]

        @username varchar(20),

        @fruitname varchar(20),

        @buycount int =  0

    AS

    BEGIN

        declare @kc int,@price float,@fruitid varchar(20)

        --先把该水果的库存量找出来

        select @fruitid=ids, @kc = numbers,@price=price from fruit where name=@fruitname

       

        --根据购买数量和库存的关系,进行购买

        if @buycount < @kc

        begin

           declare @money decimal(18,2)

           select @money = account from login where username=@username --根据用户名找到账户余额

           if(@money > @price*@buycount)

           begin

               update login set account=account-@price*@buycount where username=@username

               update fruit set numbers = numbers-@buycount where name=@fruitname

               declare @ordercode varchar(50)

               set @ordercode ='O'+cast(getdate() as varchar(50))

               insert into orders values(@ordercode,@username,GETDATE())

               insert into orderdetails values(@ordercode,@fruitid,@buycount)

           end

           else

           begin

               print '余额不足'

           end

        end

        else

        begin

           print '库存不足'

        end

    END

    触发器:

    可查,可读,不可改

    系统自动写,有inserted和deleted两个临时表

    Inserted 存放任何更改后的新信息

    Deleted存放最后一条的删除信息

    在表的  属性里面的 扩展属性里  对表的内容进行说明,达到一看就懂得效果

    删除主表时的主键时 ,如果从表中的数据还有与主键相关的值,则不能成功,因为他破坏了引用的完整性。

    默认情况下,从表的数据删完才能删主键,

    级联:表 设计 左上角 从表的关系 设置级联

    格式:

    Create  trigger   触发器名(UP_表名_操作)

       On 表名

       For(或insert of) 操作

    As

      语句

    Go

    例题:

    create  trigger  TR_STUDENT_DELETE

    on student

    for delete

    as

     declare @no varchar(3),@name varchar (4)

     select  @no=sno ,@name=sname from deteled

     insert into biandong values (@no,@name,'100')

    go

    select * from student

    事务:

    Begin  tran(或transaction)--开始事务

    Commit  --提交

    Rollback  --回滚事务

    事务特性:A原子性(atomicity)

    C一致性(consistency)

    I隔离性(isolation)

    D持久性(durability)

    @@error 是判断事务有没有错的条件 没错时值为0,出错时值不为0

    例:

    If  @@error<>0

      Rollback

    Else

      Commit

    例:

    Begin tran

      Begin try

       语句

       Commit

      End try

      Begin catch

    Rollback

      End catch

    了解 悲观锁 和 乐观锁

  • 相关阅读:
    装箱与拆箱
    java中final的用法
    一次坑爹的Oracle in查询
    Spring-Security-Oauth整合Spring-Security,拦截器
    jvisualvm连接远程Tomcat
    7.Spring-Cloud服务容错保护之Hystrix初探
    8.Spring-Cloud-Hystrix之异常处理
    9.Spring-Cloud-Hystrix之请求缓存(踩坑)
    10.Spring-Cloud-Hystrix之熔断监控Hystrix Dashboard单个应用
    11.Spring-Cloud-Hystrix之熔断监控Turbine
  • 原文地址:https://www.cnblogs.com/wanwuguizong/p/3977527.html
Copyright © 2011-2022 走看看