1、前言

2、存储过程和触发器
-》存储过程
·理解:是一组SQL命令集合,经过预编译存放在系统中;就像java程序里的方法,可以重复的被调用;
在日常的数据库操作中,会有大量的T-SQL批处理、游标,如果每次都要去重写或者打开脚本来执行会相当麻烦,
数据库可以将我们编写的T-SQL批处理保存在一个处理过程中。
--创建
·语法格式:create {proc | procedure} 存储名 [ @参数名 数据类型 [,···n] ]
as
[begin]
sql语句[块]
[end]
·例:无参数:create procedure stduent_avg
as
select 学号,avg(成绩) as '平均分' from 选课表
group by 学号
go

有参数:create procedure GetStu @number char(7)
as
select * from 学生表 where 学号=@ number
go
输出参数: create procedure Pname @p_n varchar(20),@avgage int output
as /*output表明该选项的值可以返回给调用此过程的应用程序*/
select @ avgage=avg(单价) from 商品 where 商品名称=@ p_n
go
--执行
·语法格式:execute {proc | procedure} 存储名 [ @参数名 数据类型 [,···n] ]
·例:无参数:execute stduent_avg
有参数:execute GetStu '0100111'
输出参数:declare @ avgage int
execute Pname '冰箱',@ avgage output
print '冰箱的平均价格:' + str(@ avgage)
--查看
·语法格式: sp_help 存储过程名 /*表的形式*/
sp_helptext 存储过程名 /*文本打印的形式*/
·例:
--修改: alter procedure 存储过程名 [参数]
as
sql语句[块]
go
--删除: drop procedure 存储过程名

-》触发器
·解释:一种特殊的存储过程;
它不是由用户主动发起调用的,而是当发生某一事件(表发生新增、修改、删除操作时)而触发,由系统自动调用。
·作用:
·分类:DML触发器:发生数据操作语言事件时自动执行存储过程
DDL触发器:响应DDL语句触发
·语法格式:create trigger 触发器名
on {表名 | 视图}
[with encryption] /*加密syscomments表中包含create trigger语句条目*/
{for | after | instead of} /*after:所有操作成功执行后才激活;instead of:指执行触发器而不执行触发语句*/
{[insert][delete][update]} /*执行哪个数据修改语句激活触发器的关键字*/
[not for replication] /*复制进程更改触发器所涉及的表时,不应执行该触发器*/
as sql语句[块]
·例1:为学生表创建一个DML触发器,在插入和修改数据时,都会自动显示所有学生的信息
create trigger print_table on 学生表
for insert,update
as select * from 学生表
·例2:使用DDL触发器limited来防止数据库中的任一表被修改和删除
use 教学库
go
create trigger limited on database
for drop_table,alter_table
as
print '不允许您执行对表的修改或删除操作'
rollback
·例3:创建一个delete类型的触发器,删除数据时,显示删除学生个数
create trigger del_table on 学生表
for delete
as
declare @count vachar(50)
select @count = str(@@rowcount) + '个学生被删除'
select @count
return
·查看:sp_help 触发器名
sp_helptext 触发器名
sp_helptrigger 表名 /*查看某个表上的触发器*/
·修改: alter trigger 触发器名
on {表名 | 视图}
[with encryption] /*加密syscomments表中包含create trigger语句条目*/
{for | after | instead of} /*after:所有操作成功执行后才激活;instead of:指执行触发器而不执行触发语句*/
{[insert][delete][update]} /*执行哪个数据修改语句激活触发器的关键字*/
[not for replication] /*复制进程更改触发器所涉及的表时,不应执行该触发器*/
as sql语句[块]
·禁止、启用和删除
--启用、禁止:alter table 表名
[enable | disable] trigger [all | 触发其名[,···n]]
/*启用或禁止所用或某个触发器*/
--删除:drop trigger 触发器名

第五章 存储过程&触发器的更多相关文章

  1. 《Entity Framework 6 Recipes》中文翻译系列 (22) -----第五章 加载实体和导航属性之延迟加载

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第五章 加载实体和导航属性 实体框架提供了非常棒的建模环境,它允许开发人员可视化地使 ...

  2. 2019寒假训练营第三次作业part1-网络空间安全概论第五章

    第五章 网络攻防技术 5.1 网路信息收集技术--网络踩点 黑客入侵系统之前,需要了解目标系统可能存在的: 管理上的安全缺陷和漏洞 网络协议安全缺陷与漏洞 系统安全缺陷与漏洞 黑客实施入侵过程中,需要 ...

  3. 2020重新出发,MySql基础,MySql视图&索引&存储过程&触发器

    @ 目录 视图是什么 视图的优点 1) 定制用户数据,聚焦特定的数据 2) 简化数据操作 3) 提高数据的安全性 4) 共享所需数据 5) 更改数据格式 6) 重用 SQL 语句 MySQL创建视图 ...

  4. 《Django By Example》第五章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者@ucag注:大家好,我是新来的翻译, ...

  5. 精通Web Analytics 2.0 (7) 第五章:荣耀之钥:度量成功

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第五章:荣耀之钥:度量成功 我们的分析师常常得不到我们应得的喜欢,尊重和资金,因为我们没有充分地衡量一个黄金概念:成果.因为我们 ...

  6. 《Linux内核设计与实现》读书笔记 第五章 系统调用

    第五章系统调用 系统调用是用户进程与内核进行交互的接口.为了保护系统稳定可靠,避免应用程序恣意忘形. 5.1与内核通信 系统调用在用户空间进程和硬件设备间添加了一个中间层, 作用:为用户空间提供了一种 ...

  7. Java语言程序设计(基础篇) 第五章 循环

    第五章 循环 5.2 while循环 1.while循环的语法如下: while(循环继续条件){ //循环体 语句(组); } 2.程序:提示用户为两个个位数相加的问题给出答案 package co ...

  8. 读《编写可维护的JavaScript》第五章总结

    第五章 UI层的松耦合 5.1 什么是松耦合 在Web开发中,用户界面是由三个彼此隔离又相互作用的层定义的: HTML是用来定义页面的数据和语义 CSS用来给页面添加样式 JavaScript用来给页 ...

  9. 《Linux内核设计与实现》课本第五章学习笔记——20135203齐岳

    <Linux内核设计与实现>课本第五章学习笔记 By20135203齐岳 与内核通信 用户空间进程和硬件设备之间通过系统调用来交互,其主要作用有三个. 为用户空间提供了硬件的抽象接口. 保 ...

随机推荐

  1. 第一册:lesson 125.

    原文: Tea for two. question:Does Susan have tea by herself? Can't you come in and have tea now Piter? ...

  2. PHPExcel 报 Allowed memory size of 8388608 byte

    使用 phpExcel 报 Allowed memory size of 8388608 bytes exhausted 错误,原因是php页面消耗的最大内存默认是为 8M (在PHP的ini件里可以 ...

  3. centos6.4安装过程中无法出现图形化界面

    今天在VMware9.0安装centos6.4的时候,前面的步骤都没问题,到跳过媒体检查这一步后,就发现和之前的不一样了,这次安装不是图形界面,导致后面的安装不方便 一开始以为是centos的版本不一 ...

  4. laytpl....

    switch 语句.. <ul class='mui-table-view'> <!--switch 语句 ...--> {{# switch(d['event']){ cas ...

  5. Java线程同步之静态方法

    静态方法是同步方法:自动加锁,锁的对象是类对象 public static void main(String[] args) { Thread [] threadArr=new Thread[10]; ...

  6. 权限知识中的AIX ACL

    Aix ACL是对标准权限位的扩展.通过修改分配给个人或组的标准权限,对每个文件或目录进行更精细的控制. 对每个组或用户,有3种权限分配情况: PERMIT : 准许对文件或目录的特定权限. DEMY ...

  7. IKVM:java代码c#调用

    在工作中遇到对接java接口,涉及到java加密或签名问题,.net无法实.就将java代码编辑为dll给.net调用 注:这里只做简单java代码处理,不涉及到复杂的java包 java文件处理: ...

  8. mybatis mapper问题列表

    id出现两次 2018-11-14 16:15:03.833 DEBUG 41432 --- [           main] c.a.i.o.d.mapper.DatvMapper.insert  ...

  9. 绿豆蛙的归宿(Java)

    Description 随着新版百度空间的上线,Blog宠物绿豆蛙完成了它的使命,去寻找它新的归宿. 给出一个有向无环图,起点为1终点为N,每条边都有一个长度,并且从起点出发能够到达所有的点,所有的点 ...

  10. 8-----BBS论坛

    BBS论坛(八) 8.1.发送邮箱验证码功能 (1)cms/resetemail.html {% from 'common/_macros.html' import static %} {% bloc ...