zoukankan      html  css  js  c++  java
  • SQL Sever语言 存储过程及触发器

    存储过程:就像函数一样的
    会保存在数据库中--》可编程性--》存储过程


    创建存储过程: 保存在数据库表,可编程性,存储过程
    create proc jiafa

    --需要的参数
    @a int,
    @b int
    as
    --存储过程内容
    declare @c int;
    set @c =@a + @b; 
    return @c;
    go


    相当于一个函数
    public int 函数名 (变量1,变量2)
    {
    函数语句
    return int c
    }

    存储之后可以直接调用,
    执行存储过程
    exec 存储名

    有返回值时
    declare @f int;
    exec @f= jiafa 3,5;
    print @f;


    --例:在CAR表中查询对应种类的车辆数目
    --存储过程
    creat proc ChaXun
    @n varchar(20)
    as
    declare @num int 
    select @num=coount(*) from car where name like '%'+@n+'%'
    go

    --调用方法
    declare @m int
    exec @m=ChaXun '奥迪'
    print @m

    触发器:
    是一个特殊的存储过程;
    通过增删改查的动作来触发执行,没有参数,没有返回值;
    存储位置在要执行的表的下拉列表中

    不去触发不执行,满足条件之后执行,相当于HTML中的事件

    create trigger 触发器名称

    Insert_Student --命名规范 动作_要执行的表名 为了以后更容易的了解触发器要使用的情况

    on Student --针对于那张表
    for insert --针对于那个动作来触发

    --onclick= "show()"
    as
    触发器要执行的代码 

    go

    1、for的意思是在动作执行之后触发
    2、instead of delete 的意思是删除之前的引发,可以理解为替代,写了这个之后写的代码就没有用了,就被触发器的代码覆盖了

    删除存在外键的表的内容时,需要先删除外键连接的表的内容
    create trigger Delete_info
    on inf0
    instead of delete
    as
    declare @c varchar(20)
    select @c =Code from deleted

    delete from work where infocode=@c
    delete from family where infocode=@c
    delete from info where code=@c

    go


    instead of的使用比for的频繁

    面试过程中问的比较多,但实际工作是用的比较少

  • 相关阅读:
    jQuery Deferred和Promise的使用介绍:
    asp.net客户端IP跟踪
    jquery常用的一些方法
    前端音频流播放
    c# Http请求下载二进制流文件
    iView表格行验证问题
    【已解决】Https请求—未能创建 SSL/TLS 安全通道
    安全开发规范
    数据库设计规范
    高性能开发规范
  • 原文地址:https://www.cnblogs.com/zl1121102942/p/5794279.html
Copyright © 2011-2022 走看看