一周速学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 游标名

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

猜你喜欢

转载自blog.csdn.net/beiye_/article/details/127088644