- 1、本文档共33页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
例9-13 修改触发器。 程序清单如下: CREATE TRIGGER s_reminder ON S WITH ENCRYPTION AFTER INSERT, UPDATE AS RAISERROR (不能对该表执行添加、更新操作, 16, 10) ROLLBACK GO -- 下面修改触发器. ALTER TRIGGER s_reminder ON S AFTER INSERT AS RAISERROR (不能对该表执行添加操作, 16, 10) ROLLBACK GO 2.使用sp_rename命令修改触发器的名称。 sp_rename命令的语法形式如下: sp_rename oldname,newname 由于某种原因,需要从表中删除触发器或者需要使用新的触发器,这就必须首先删除旧的触发器。只有触发器所有者才有权删除触发器。删除已创建的触发器有三种方法: (1)使用系统命令DROP TRIGGER删除指定的触发器。其语法形式如下: DROP TRIGGER { trigger } [ ,...n ] (2)删除触发器所在的表。删除表时,SQL Server将会自动删除与该表相关的触发器。 (3)在SQL Server管理平台中,展开指定的服务器和数据库,选择并展开指定的表,右击要删除的触发器,从弹出的快捷菜单中选择“删除”选项,即可删除该触发器。 触发器是在对表进行插入、更新或删除操作时自动执行的存储过程,触发器通常用于强制业务规则 触发器还是一个特殊的事务单元,当出现错误时,可以执行ROLLBACK TRANSACTION回滚撤销操作 触发器一般都需要使用临时表:deleted表和inserted表,它们存放了被删除或插入的记录行副本 触发器类型: INSERT触发器 UPDATE触发器 DELETE触发器 我们在项目开发中有一些常用的存储过程 大批量数据的插入 分页 在项目的开发中,有时会碰到批量数据录入数据库的情况,编写多条插入语句效率太低 Create procedure SplitString (?@string nvarchar(1000),??-- 要分隔的字符串?@splitchar nvarchar(10) = ,,?-- 分隔字符?@tablename nvarchar(50),??-- 存入的表名称?@fieldname nvarchar(50) = [id]?-- 存入的字段名称)as?-- 将字符串分隔开放进表中?declare @l int?-- 第一个分隔字符的位置declare @s int?-- 第二个分隔字符的位置set @l = 0 set @s = charindex(@splitchar, @string, @l)?while @l = len(@string)begin?declare @id nvarchar(50)???if @s = 0 set @s = len(@string) + 1?-- 如果到最后一个字符串那么第二个分隔字符的位置就是这个字符串的长度加一??set @id = substring(@string, @l, @s - @l)?-- 取值?set @l = @s + 1?set @s = charindex(@splitchar, @string, @l)??if ltrim(rtrim(@id)) = continue?-- 如果是空字符串就跳过??declare @sql nvarchar(1000)?set @sql = insert into + @tablename + (+ @fieldname +) values( + @id + )?exec sp_executesql @sqlendgo 示例数据库: NorthWind 涉及表: Orders OrderDetails 分隔字符串存储过程 CutString create proc CutString (@sourcestring varchar(100) output, @outstring varchar(10) output) as declare @position int set @position = charindex(,,@sourcestring) if (@position = 0) begin set @outstring = @sourcestring set @sourcestring = null end else
文档评论(0)