·触发器(trigger)

【触发器本质上还是一个存储过程,只不过不是用exe来调用执行,而是通过增删改数据库的操作】

【触发器只对增、删、改有效】

触发器的格式

(instead of与for的区别 如下)

instead of:

create trigger 触发器名(TR_表名_操作)

on 表名

instead of 增或删或改

--当为instead of时,go下的代码不执行只起到触发的作用,只执行as里面的代码

as

as里面随便写代码

go

go下的代码只能是 增或删或改

for:

create trigger 触发器名(TR_表名_操作)

on 表名

for增或删或改

--当为for时,go下的代码先执行操作,再执行as里面的代码

as

as里面随便写代码

go

go下的代码只能是 增或删或改

写触发器时,go下面代码中的增删改和表名,与on后面的表名instead of或者for后面的增删改差要一致,否则无法触发

例子:(在触发器中可以有参数)

Instead of实用:

create trigger dongtaichufa

on teacher

instead of delete

as

begin

declare @tno varchar(20)

set @tno=(select tno from deleted)--deleted的作用是储存临时数据(存储的是tno为的一行数据),@tno=tno的含义是获取教师工号

delete from teacher where tno=@tno--删除这一条数据

end

go

delete from teacher where tno= '831'

for实用:

create trigger tr_dongtai

on teacher

for insert

as

begin

declare @tno varchar(20)--定义一个变量

set @tno=(select tno from inserted)--inserted的作用是临时存储数据,(存储要插入的一行数据),@tno的含义是获取要插入的教师的编号

delete from teacher where tno=@tno --删除刚刚插入的一行数据

end

go

insert into teacher values('810','王五','男','1991-1-1','讲师','电子工程系')

视图(view)

1、视图窗口创建视图步骤:1·数据库名-->右键视图(新建视图)-->2·添加要连接的表-->3·选择要添加的列名

【代码创建视图】:

格式为:

create view 视图名

as

select 表名.列名,表名.列名,表名.列名,表名.列名 from 表名 join 表名 on 表名.列名=表名.列名

--------------例如:

没用视图如下

用代码创建视图为:

create view shitu

as

select student.sno,sname,ssex,sbirthday,class,course.cno,cname,degree,tno from

student join score on student.sno=score.sno join course on score.cno=course.cno

事务

Begin  tran----开始事务

Commit---提交

Rollback---回滚事务

---事务(在begin tran里面有多个代码,如果有一个发生错误,则全部停止,并返回begin tran开始处)

实例:

begin tran--事务的开始

  insert into student values('110','hh','aa','1987/1/12',5788)     —插入第一个数据为主键,110没有重复的,正确

if @@ERROR >0     --全局变量,判断上一句中是否有错,返回0没有错,不等于0则发生错误

goto tr       --如果发生错误,则跳转到名字为tr的一行(goto后面的只是个名字而已)

  insert into course  values('3-105','计算机',825)     --第一个3-105则为外键,发生错误,表中有3-105

if @@ERROR >0

begin

tr:     --接上面的tr

  rollback tran     --回滚到tran开始处

end

else      --如果没有错误的话

begin

  commit tran      --提交事务,接着往下运行

end

sql中的触发器、视图、事务的更多相关文章

  1. SqlServer和Oracle中一些常用的sql语句8 触发器和事务

    --创建和执行事后触发器 --更新仓库备份表中记录时自动创建数据表且插入三条记录 create trigger db_trigger1 on 仓库备份 for update as begin if E ...

  2. pl/sql学习(5): 触发器trigger/事务和锁

    (一)触发器简单介绍 触发器是由数据库的特定时间来触发的, 特定事件主要包括以下几种类型: (1)DML: insert, update,delete 增删改 (2)DDL: create, alte ...

  3. mysql中的触发器和事务的操作

    触发器 语法 创建触发器: CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigge ...

  4. SQL学习笔记七之MySQL视图、触发器、事务、存储过程、函数

    阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名 ...

  5. python操作MySQL,SQL注入的问题,SQL语句补充,视图触发器存储过程,事务,流程控制,函数

    python操作MySQL 使用过程: 引用API模块 获取与数据库的连接 执行sql语句与存储过程 关闭数据库连接 由于能操作MySQL的模块是第三方模块,我们需要pip安装. pip3 insta ...

  6. mysql:视图,触发器,事务,存储过程,函数

    一.视图 视图是一个虚拟表并不是(正实存在的) 创建老师表 create table teacher( id int primary key auto_increment, tname varchar ...

  7. Mysql-自带的一些功能,基本用法(视图,触发器,事务,存储过程,函数,流程控制)

    一. 视图 二. 触发器 三. 事务 四. 存储过程 五. 函数 六. 流程控制 一 .视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用 ...

  8. MySQL之视图、触发器、事务、存储过程、函数

    一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的 ...

  9. mysql之视图,触发器,事务等。。。

    一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的 ...

随机推荐

  1. 用C++ 自娱自乐

    最无聊的时光当属 考试前的复习时段了,在一些论坛上看到一些用字符组成的图像,觉得有点意思,于是,自己 用C++ 参考一些论坛的图像,写了下面这个东西,来表达此时的心情. #include<ios ...

  2. 学习linux必备服务器VPS

    有很多和老沙一样喜欢linux或者喜欢架设服务器的朋友,因为没有linux环境在本机弄个虚拟机说实话很卡很不方便.老沙今天给大家推荐一款国外VPS,比这国内的云服务器便宜的太多了,年付19.99美元. ...

  3. delphi 选中的展开0级 子级不展开

    TreeView1.Selected.Expand(False); //选中的展开0级 子级不展开 TreeView1.Selected.Expand(True); //全部展开 来自为知笔记(Wiz ...

  4. material-dialogs

    https://github.com/afollestad/material-dialogs

  5. 详谈 php定时器

    以前对se特别感兴趣,但是自己又不会java,lucene等搜索引擎开发工具,于是不断挖掘php的功效. 最后发现php也可以做抓取,并且原理很易:直接获取页面源文件,然后通过正则或字符串的参照截取来 ...

  6. Flex4之元数据标签使用

    Flex 元数据标签 1.[ArrayElementType] 使用ArrayElementType元数据标签可以让你定义数组元素的数据类型. 程序代码: [ArrayElementType(&quo ...

  7. 标准库类型vector

    标准库类型vector表示对象的集合,其中所有对象的类型都相同.集合中的每个对象都有一个与之对应的索引,索引用于访问对象.因为vector“容纳着”其他对象,所以它被称为容器. 要想使用vector, ...

  8. 调用AutoCAD的内置对话框

    如何将CAD的内置对话框(如style命令所用的文字样式对话框)作为当前对话框的子对话框调出? 常用的几个对话框对应的函数为:1.尺寸标注样式编辑对话框:int acedEditDimstyleInt ...

  9. problem:SVN error: (501 Not Implemented)

    problem:SVN error: (501 Not Implemented)solution:The repository was moved so the URL I was using is ...

  10. jQuery Validate 插件[表单验证 属性介绍]

    详细介绍一下Validate插件 $("#form的Id").validate({ }) 属性 规则 描述 required:true 必须输入的字段 required: &quo ...