Heim  >  Artikel  >  Datenbank  >  数据库中的事务、存储过程和触发器的简单使用

数据库中的事务、存储过程和触发器的简单使用

WBOY
WBOYOriginal
2016-06-07 15:54:10977Durchsuche

l什么是事务(Transaction)l指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)--也就是由多个sql语句组成,必须作为一个整体执行l这些sql语句作为一个整体一起向系统提交,要么都执行、要么都不执行 l语法步骤: ?开始事务:BEGIN TRANSACTION?事务

l什么是事务(Transaction) l指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)--也就是由多个sql语句组成,必须作为一个整体执行 l这些sql语句作为一个整体一起向系统提交,要么都执行、要么都不执行 l语法步骤: ?开始事务:BEGIN TRANSACTION ?事务提交:COMMIT TRANSACTION ?事务回滚:ROLLBACK TRANSACTION l判断某条语句执行是否出错: ?全局变量@@ERROR; ?@@ERROR只能判断当前一条T-SQL语句执行是否有错,为了判断事务中所有T-SQL语句是否有错,我们需要对错误进行累计; 例:SET @errorSum=@errorSum+@@error l存储过程---就像数据库中运行方法(函数) l和C#里的方法一样,由存储过程名/存储过程参数组成/可以有返回结果。 l前面学的if else/while/变量 等,都可以在存储过程中使用 l优点: 执行速度更快 允许模块化程序设计 提高系统安全性 减少网络流通量 l系统存储过程 ?由系统定义,存放在master数据库中 ?名称以“sp_”开头或”xp_”开头 l自定义存储过程 ?由用户在自己的数据库中创建的存储过程
系统存储过程 说明
sp_databases 列出服务器上的所有数据库。
sp_helpdb 报告有关指定数据库或所有数据库的信息
sp_renamedb 更改数据库的名称
sp_tables 返回当前环境下可查询的对象的列表
sp_columns 回某个表列的信息
sp_help 查看某个表的所有信息
sp_helpconstraint 查看某个表的约束
sp_helpindex 查看某个表的索引
sp_stored_procedures 列出当前环境中的所有存储过程。
sp_password 添加或修改登录帐户的密码。
sp_helptext 显示默认值、未加密的存储过程、用户定义的存储过程、触发器或视图的实际文本。
l定义存储过程的语法 CREATE PROC[EDURE] 存储过程名 @参数1 数据类型 = 默认值 OUTPUT, @参数n 数据类型 = 默认值 OUTPUT AS SQL语句 l参数说明: ?参数可选 ?参数分为输入参数、输出参数 ?输入参数允许有默认值 lEXEC 过程名 [参数] l触发器是一种特殊类型的存储过程,它不同于前面介绍过的一般的存储过程。 l一般的存储过程通过存储过程名称被直接调用,而触发器主要是通过事件进行触发而被执行。 l触发器是一个功能强大的工具,在表中数据发生变化时自动强制执行。触发器可以用于SQL Server约束、默认值和规则的完整性检查,还可以完成难以用普通约束实现的复杂功能 l那究竟何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。
常见的触发器有三种:分别应用于Insert , Update , Delete 事件 l常用语法 CREATE TRIGGER triggerName ON Table for UPDATE|INSERT|DELETE AS begin … end l触发器-更新 CREATE TRIGGER testForFun ON dbo.Category for UPDATE AS begin select * from book end update Category set c_name = 'Android2' where c_id=3 l触发器-删除 CREATE TRIGGER testForDel ON dbo.Category for delete AS begin select * from book end delete Category set c_name = 'Android2' where c_id=3
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn