sql中的触发器、视图、事务
·触发器(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·选择要添加的列名
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中的触发器、视图、事务的更多相关文章
- SqlServer和Oracle中一些常用的sql语句8 触发器和事务
--创建和执行事后触发器 --更新仓库备份表中记录时自动创建数据表且插入三条记录 create trigger db_trigger1 on 仓库备份 for update as begin if E ...
- pl/sql学习(5): 触发器trigger/事务和锁
(一)触发器简单介绍 触发器是由数据库的特定时间来触发的, 特定事件主要包括以下几种类型: (1)DML: insert, update,delete 增删改 (2)DDL: create, alte ...
- mysql中的触发器和事务的操作
触发器 语法 创建触发器: CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigge ...
- SQL学习笔记七之MySQL视图、触发器、事务、存储过程、函数
阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名 ...
- python操作MySQL,SQL注入的问题,SQL语句补充,视图触发器存储过程,事务,流程控制,函数
python操作MySQL 使用过程: 引用API模块 获取与数据库的连接 执行sql语句与存储过程 关闭数据库连接 由于能操作MySQL的模块是第三方模块,我们需要pip安装. pip3 insta ...
- mysql:视图,触发器,事务,存储过程,函数
一.视图 视图是一个虚拟表并不是(正实存在的) 创建老师表 create table teacher( id int primary key auto_increment, tname varchar ...
- Mysql-自带的一些功能,基本用法(视图,触发器,事务,存储过程,函数,流程控制)
一. 视图 二. 触发器 三. 事务 四. 存储过程 五. 函数 六. 流程控制 一 .视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用 ...
- MySQL之视图、触发器、事务、存储过程、函数
一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的 ...
- mysql之视图,触发器,事务等。。。
一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的 ...
随机推荐
- mockjs学习总结(方便前端模拟数据,加快开发效率)
基本介绍: 在我们前端开发中经常遇到这样的事情,接口没有写好,只能写静态页面,如何才能用很简单的方法模拟后端数据呢?mockjs就干了这件事,而且干的还挺好. 下面是我作为初学者的一些总结经验,期 ...
- linux 查看当前路径命令:pwd
查看当前路径命令:pwd pwd命令能够显示当前所处的路径. 这个命令比较简单,如果有时在操作过程中忘记了当前的路径,则可以通过此命令来查看路径,其执行方式为: # pwd /home/samlee ...
- IOS 7 开发范例 - UISwitch的使用
Creating and Using Switches with UISwitch You would like to give your users the ability to turn an o ...
- IE8不显示字体图标
bootstrap流行,随着自带的字体图标也火起来了.美丽的字体系统中没有.制作成字体文件,下载到本地.浏览美丽的网页哦. 在项目中遇到有些IE8显示不了,原因是IE8下设置了禁止字体下载
- Spring MVC Junit4 单元測试 JunitTest
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSmVyb21lX3M=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...
- 浅谈Java对象回收的三种方式
半夜睡不着,加上最近在看Java虚拟机,写点给新手和自己看的东西. 第一类:生命周期中止 void scope(){ Test t = new Test(); } 第二类:对象无引用 (一).对象的应 ...
- 进程间通信之XSI IPC
XSI IPC源自于系统V的IPC功能. 有三种IPC我们称作XSI IPC,即消息队列.信号量以及共享存储器,它们之间有很多相似之处. 1.标识符和键 每个内核中的IPC结构(消息队列.信号量或共享 ...
- linux,__attribute__用法
转载:http://hi.baidu.com/twinspace/item/24365251e837c2948d12edf1 1. gcc的__attribute__编译属性 要了解Linux Ker ...
- SQL Server 之 在与SQLServer建立连接时出现与网络相关的或特定于实例的错误
背景:在用数据库时,打开SQL Server 2008 R2 的 SQL Server Management Studio,输入sa的密码发现,无法登陆数据库,提示信息如上: 解决方案: 1.打开Sq ...
- Android 高级UI设计笔记05:使用TextView实现跑马灯的效果
1. 使用TextView属性实现跑马灯的效果: (1). 新建一个Android工程,命名为"MarqueeTextViewDemo",如下: (2). 来到activity_m ...