数据库中的触发器,索引 ,事务

发布时间:2020-06-14 21:53:27 作者:sunshine225
来源:网络 阅读:351

一.触发器

 触发器是一种实施复杂数据完整性的特殊存储过程,在对表或视图执行update、insert或delete语句时自动触发执行,以防止对数据进行不正确、未授权或不一致的参数。

/*创建触发器*/
creat [temp|temporary] trigger name
[before|after] [insert|update|delete of columns] on table
begin
SQL语句
end;

  触发器能够维持两个表间的参照完整性,就像外键一样。外键执行这个任务的效率更高,因为它们在数据改变之前被测试,而不像触发器在数据改变后才触发。


二.索引

(1)定义:

  1. 索引是数据库的对象之一,索引是为了加速对表中数据行的检索而创建的一种分散的一种存储结构。

    索引是针对一个表而建立的,它是由数据页面以外的索引页面组成的 

create unique clustered index book_id_index--惟一性聚簇索引
on book(book_id asc)
with 
fillfactor=50 /*填充因子50%*/


(2)索引的分类

  1. 聚簇索引

    数据表的物理顺序和索引表的顺序相同,它根据表中的一列或多列值的组合排列记录

create unique clustered index book_id_index--惟一性聚簇索引
on book(book_id asc)
with 
fillfactor=50 /*填充因子50%*/

b. 非聚簇索引

create nonclustered index student_course_index
on student_course(student_id asc,course_id asc)
with 
fillfactor=50

三.事务

(1)定义:

  事务是指一个操作序列,这些操作序列要么都被执行,要么都不被执行,它是一个不可分割的工作单元。

(2)语法步骤:

  1. 事务开始:BEGIN TRANSACTION 

  2. 事务提交:COMMIT TRANSACTION 

  3. 事务回滚:ROLLBACK TRANSACTION 

  4. 判断某条语句执行是否出错:全局变量@@ERROR; 

    @@ERROR只能判断当前一条T-SQL语句执行是否有错,为了判断事务中所有T-SQL语句是否有错,我们需要对错误进行累计; 例:SET @errorSum=@errorSum+@@error


四.存储过程

(1)定义:

  存储过程是一系列预先编辑好的、能实现特定数据操作功能的SQL代码集。它与特定的数据库相关联,存储在SQL Server 服务器上。

(2)存储过程的好处:

  1. 重复使用。存储过程可以重复使用,从而减少数据库开发人员的工作量

  2. 提高性能。存储过程在创建的时候就进行了编译,将来使用的时候就不用再编译。一般的SQL语句使用一次就编译一次,所以使用存储过程提高了效率

  3. 减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此减低了网络传输的运输量

  4. 安全性。参数化的存储过程可以防止SQL注入***,而且可以将Grant、Deny、以及Revoke权限应用于存储过程

  定义一个存储过程:

create proc spAddStudents
  @name  nvarchar(50)=null
  as
  begin transaction --事务
  insert into [StudentInfo].[dbo].[Students]
  (Name)
  values
  (@name)
  if @@ERROR<>0
  begin
  rollback tran
  return
  end

创建一个实现加法计算并将运算结果作为输出参数的存储过程

 create proc spAdd
  @value1 int,
  @value2 int,
  @result int output
  as
  select @result=@value1+@value2
  go

执行spAdd存储过程

declare @value1 int
  declare @value2 int
  declare @result int
  set @value1=1
  set @value2=1
  exec spAdd @value1,@value2,@result output
  print convert(char(5),@value1) +'+'+convert(char(5),@value2) +'='+ convert(char(5),@result)

参考:http://www.xuebuyuan.com/2041347.html

推荐阅读:
  1. MySQL数据库的索引和事务
  2. Oracle中触发器(2)

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

数据库 触发器 update

上一篇:如何安装和配置打印服务器之六:自定义客户端电脑使用网络打印机的默认设置

下一篇:python+selenium初学者常见问题

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》