一周速学SQL Server(第五天)

相关文章链接:

一周速学SQL Server(第一天)

一周速学SQL Server(第二天)

一周速学SQL Server(第三天)

一周速学SQL Server(第四天)

一周速学SQL Server(第六天)​​​​​​​

一、触发器介绍

1.1、触发器

1)一种特殊的存储过程。触发器的调用通过事件进行触发,自动调用执行。

2)对表进行操作(插入、删除、更新)时,如果定义了对应的触发器,系统会自动调用。

1.2、分类

1)DDL触发器         create         alter         drop

2)DML触发器         insert         update         delete

DML触发器分为两种:

alter触发器          insert update delete:操作之后触发        

instead of触发器insert update delete:不执行定义的操作,执行的是触发器本身。

二、instead与delete详解

1)Inserted(插入表)和deleted(删除表),是逻辑表也是虚表,系统在内存中创建的,不会存储到数据库中。

2)只能读取不能修改数据。结构与操作的表相同。触发器执行过程中存在并且可以访问。

对表的操作

Inserted表

deleted表

insert操作

存放插入的数据

update操作

存放更新后的数据

存放更新前的数据

delete操作

存放被删除的数据

触发器工作完成之后,这两张表会被自动删除。

3)​​​​​​​inserted表存放的是插入或更新后的数据deleted表存放更新前或删除的数据

4)触发器是一个特殊的事务,可以进行一些检查,设置条件,如果不满足,可以回滚。

三、after触发器

1)after触发器:对表操作之后触发

2)after insert:在插入操作执行之后触发

基本语法:

create/alter trigger 触发器名称

on 表名

for/after insert

as

--T-SQL语句

go

3)after update

修改就是先删除原来的,再插入新的一条数据 

四、after触发器之delete和instead insert

1)after delete触发器:删除后触发delete,可以查看删除的数据。

 标识列的缺点:不能显示插入标识列。

2)instead of insert触发器

不执行定义操作,执行的是触发器本身。

五、游标介绍及分类

5.1、游标是什么?

 1)对数据查询结果集的一种访问机制,允许用户对结果集进行逐条访问,每次访问的都是单条数据。

2)操作对象:结果集

3)可以理解为定义在特定结果集上的指针,可以控制这个指针来遍历数据集或指定特定的行。

5.2、游标的作用

1)定位到结果集中的某一行,对当前位置的数据进行读写。

2)游标适用于数据量小的情况。

5.3、游标分类

1)静态游标

无论对数据库做任何操作,结果集都不会变。

若想结果集与操作之后的数据一致,只能关闭游标,再重新打开。

2)动态游标

与静态相对,前后滚动,结果集就会获取所有的改变。提取时,行数据、顺序、成员都会发生改变。

对数据库的操作都可以通过动态游标可见。可使用api函数或T-SQL中的where current of 子句进行更新。

游标外部所做的更新直到提交时才可见。

3)只进游标

不支持滚动,只能从头读到尾。

对数据库所做的更改在提取时是可见的,但不能滚动。提取后所做的更改是不可见的。

4)键集驱动游标

5)总结:

静态游标在滚动时,检测不到表数据的变化,消耗的资源相对比较少;(多选择)

动态游标在滚动时,检测到表数据的变化,消耗的资源相对比较多;(性能相对较低)

只进游标不支持滚动,检测不到表数据的变化,消耗的资源相对比较少;(只读数据情况下选择)。

5.4、游标的生命周期

声明—>打开—>读取数据—>关闭游标—>释放游标

 六、创建只进游标

语法:

declare 游标名 cursor local/global

for

SQL查询语句

open游标名

fetch next from 游标变量名 into 变量列表

while @@fetch_status = 0

begin 

--处理

end

close 游标名

deallocate 游标名

工作中应用:游标放在存储过程中。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白天数糖晚上数羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值