- 浏览: 82055 次
- 性别:
- 来自: dg
文章分类
- 全部博客 (70)
- [随笔分类]DB(数据库) (18)
- c# (1)
- 实用参考代码 (1)
- 默认收藏夹 (9)
- [网站分类]6.读书区(技术书籍阅读心得、书籍推荐) (1)
- xml&web服务 (1)
- [随笔分类]Asp.net (18)
- C# BLOG (1)
- 技术仓库 (0)
- .net (1)
- 编程技巧 (1)
- [随笔分类].Net Framework (1)
- [随笔分类]程序人生(非技术) (1)
- [随笔分类]其他技术类 (1)
- [随笔分类]WAP (1)
- 收藏夹 (1)
- 其他 (1)
- DotNet技术 (4)
- [网站分类]3.非技术区(技术之外的文章,但不要涉及任何政治内容) (4)
- [网站分类]7.提问区(建议在<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>中提问) (2)
- [网站分类]1.首页原创精华.NET区(包含架构设计、设计模式)(对首页文章的要求:原创、高质量、经过认真思考并精心写作) (1)
- [随笔分类]Javascript & Css & Html (1)
最新评论
1.简介:
Sql Server2005新增加了DDL触发器。
与DML触发器不同的是,它们不会为响应针对表或视图的UPDATE、INSERT或DELETE语句而激发。
相反,它们将为了响应各种数据定义语言(DDL)事件而激发。
这些事件主要与以关键字CREATE、ALTER和DROP开头的Transact-SQL语句对应。
执行DDL式操作的系统存储过程也可以激发DDL触发器。
2.作用:
如果要执行以下操作,可以使用DDL触发器:
(1)要防止对数据库架构进行某些更改。
(2)希望数据库中发生某种情况以响应数据库架构中的更改。
(3)要记录数据库架构中的更改或事件。
3.DDL 触发器作用域:
(1)数据库范围:数据库范围内的DDL触发器都作为对象存储在创建它们的数据库中。
(2)服务器范围:服务器范围内的DDL触发器作为对象存储在master数据库中。
例如:当数据库中发生CREATE TABLE事件时,都会触发为响应CREATE TABLE事件创建的数据库范围DDL触发器。
每当服务器上发生CREATE Index事件时,都会触发为响应CREATE Index事件创建的服务器范围DDL触发器。
4.与DML触发器比较不同处:
(1)DML触发器在INSERT、UPDATE和DELETE语句上操作。
(2)DDL触发器在CREATE、ALTER、DROP和其他DDL语句上操作。
(3)只有在完成Transact-SQL语句后才运行DDL触发器。DDL 触发器无法作为 INSTEAD OF 触发器使用。
(4)DDL触发器不会创建插入(inserted)的和删除(deleted)的表.但是可以使用EVENTDATA函数捕获有关信息。
5.例题:
--例题1
--服务器范围的DDL触发器
IF EXISTS ( SELECT *
FROM sys.server_triggers
WHERE name = 'TR_CREATEDATABASE' )
DROP TRIGGER TR_CREATEDATABASE ON ALL SERVER ;
GO
CREATE TRIGGER TR_CREATEDATABASE
ON ALL SERVER
FOR CREATE_DATABASE
AS
PRINT 'Database Created'
PRINT CONVERT (nvarchar (1000),EventData())
GO
--创建数据库db1
CREATE DATABASE db1;
--收到下列消息
Database Created
<EVENT_INSTANCE><EventType>CREATE_DATABASE</EventType><PostTime>2008-09-01T20:17:35.170</PostTime><SPID>52</SPID><ServerName>YANFA0</ServerName><LoginName>YANFA0\Administrator</LoginName><DatabaseName>db1</DatabaseName><TSQLCommand><SetOptions ANSI_NULLS="ON" ANSI_NULL_DEFAULT="ON" ANSI_PADDING="ON" QUOTED_IDENTIFIER="ON" ENCRYPTED="FALSE"/><CommandText>CREATE DATABASE db1;</CommandText></TSQLCommand></EVENT_INSTANCE>
--例题2
--服务器范围的DDL触发器
IF EXISTS ( SELECT *
FROM sys.triggers
WHERE name = N'TR_DROPINDEX'
AND parent_class = 0 )
DROP TRIGGER [TR_DROPINDEX] ON DATABASE
GO
CREATE TRIGGER TR_DROPINDEX
ON DATABASE
FOR DROP_INDEX
AS
PRINT 'DROP INDEX'
ROLLBACK
GO
--建立表
CREATE TABLE TableTest ( ids INT, i NVARCHAR(100) )
GO
--建立唯一索引
CREATE UNIQUE INDEX index_TableTest
ON TableTest ( ids )
GO
--删除索引
DROP INDEX index_TableTest
ON TableTest
GO
--收到下列消息
--我们从消息可以看到删除索引不成功!
DROP INDEX
消息 3609,级别 16,状态 2,第 2 行
事务在触发器中结束。批处理已中止。
--例题3
--当不再需要某个DDL触发器时,可以禁用或删除该触发器。
--禁用DDL触发器不会将其删除。该触发器仍然作为对象存在于当前数据库中。
--但是,当运行编写触发器程序所用的任何DDL语句时,不会激发触发器。
--可以重新启用禁用的DDL触发器。
DISABLE TRIGGER [TR_DROPINDEX] ON DATABASE
GO
ENABLE TRIGGER [TR_DROPINDEX] ON DATABASE
GO
发表评论
-
MS SQL数据库备份和恢复存储过程(加强版本)
2004-05-20 13:55 775上次写了MS SQL数据库备份和恢复存储过程详细情况见(htt ... -
求每组前2名,你有几种方法?(MS SQL2000)
2004-08-23 11:55 919create table abc( i nvarchar(10 ... -
ORDER BY排序后,表中字段相加的困惑?
2005-02-03 16:38 1001在sql server2000自带DB-pubs 运行下面的s ... -
sql server中UNION 运算符随笔(几个需要注意的地方小总结)
2005-03-03 11:35 1103UNION 运算符是将两个或更多查询的结果组合为单个结果集 ... -
局部临时表和表变量的重复创建问题随笔
2005-04-22 11:51 920今天遇到一个需求,是根据逻辑判断动态创建局部临时表 ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-TRY…CATCH
2007-12-03 13:56 750Transact-SQL 代码中的错误可使用 TRY…CATC ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-数据类型
2007-12-03 14:57 776sql server2005新增加了2大数据类型: 1.大值数 ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-TOP 运算符
2007-12-03 16:49 758TOP 运算符介绍:TOP 运算符在Sql Serve ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-公用表表达式(CTE)
2008-07-31 14:52 896公用表表达式是Sql Server ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-APPLY 运算符
2008-08-13 15:07 820APPLY 运算符简介: APPLY 运算符是Sql Serv ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-窗口函数(OVER)
2008-08-26 07:53 9331.简介: SQL Server 2005中的窗口函数帮助你迅 ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-总结
2008-09-03 07:49 736Microsoft SQL Server 2005扩展了SQL ... -
sqlserver日期推算(年,季度,月,星期推算)
2008-11-19 19:20 2225DECLARE @dt datetimeSET @dt=GET ... -
sqlserver字符串拆分(split)方法汇总
2008-11-19 20:06 6909--方法0:动态SQL法declare @s varchar( ... -
sqlserver字符串合并(merge)方法汇总
2008-11-19 20:23 3616--方法1--使用游标法进行字符串合并处理的示例。--处理的数 ... -
sqlserver排序规则在拼音处理中的应用
2008-11-21 08:53 1074--1. 按拼音排序DECLARE @t TABLE(co ... -
sqlserver排序规则在全角与半角处理中的应用
2008-11-21 09:41 1214--1.查询区分全角与半角字符--测试数据DECLARE ...
相关推荐
Microsoft SQL Server 2008 對Transact-SQL 語言進行了進一步增強!这个是对SQL2008在T_SQL方面增强作了详细的介绍!
在数据库管理领域,SQL(Structured Query Language)是用于管理和处理关系型数据库的标准语言,而Transact-SQL(T-SQL)则是SQL的一个扩展,由Microsoft为它的SQL Server数据库管理系统所特有。本篇文章将深入探讨...
Beginning Transact-SQL with SQL Server 2000 and 2005 byPaul TurleyandDan Wood Wrox Press 2006 (594 pages) ISBN:076457955X Prepare for the ever-increasing demands of programming....
### SQL Server 2008 Transact-SQL Recipes #### 概述 SQL Server 2008 Transact-SQL Recipes 是一本专为数据库管理员、开发者以及任何希望深入理解 SQL Server 2008 中 Transact-SQL 功能的专业人士所编写的书籍。...
SQL Server 2005 Beta 2带来了对Transact-SQL的显著增强,这些改进主要集中在提升查询表达能力、数据完整性(DRI)支持、性能优化以及错误处理方面。以下是对这些增强功能的详细说明: 1. **排序函数**: SQL ...
Transact-SQL语言是SQL Server 2005在SQL语言的基础上增加了一些语言要素后的扩展语言,其语言要素包括注释、变量、运算符、函数和流程控制语句等。掌握Transact-SQL语言是进一步学习更多的管理技术和数据库应用开发...
本书主要聚焦于T-SQL(Transact-SQL)编程语言的使用,T-SQL是SQL Server使用的SQL方言,它不仅包括标准SQL的功能,还扩展了许多专为SQL Server设计的独特特性。T-SQL编程基础部分涵盖了以下内容: - **SQL语句语法...
Beginning Transact-SQL with SQL Server 2000 and 2005 byPaul TurleyandDan Wood Wrox Press 2006 (594 pages) ISBN:076457955X Prepare for the ever-increasing demands of programming. Beginning with an ...
1. **基本语法**:学习如何使用Transact-SQL编写声明性语句,包括DML(Data Manipulation Language)如SELECT、INSERT、UPDATE和DELETE,以及DDL(Data Definition Language)如CREATE、ALTER和DROP,用于创建和修改...
Transact—SQL是结构化查询语言(SQL)的增强版本,与许多ANSI SQL标准兼容,Transact-SQL代码已成为SQL Server的核心。本书全面介绍了Transact—SQL,全书共21章,按照由浅入深的顺序,详细介绍了Transact-SQL...
T-SQL,即Transact-SQL,是SQL的一个扩展,主要用于微软的SQL Server系统中,用于数据查询、更新、插入和删除,以及复杂的存储过程和触发器的编写。 在SQL Server 2008版本中,T-SQL得到了许多增强和改进,这本书将...
Beginning Transact-SQL with SQL Server 2000 and 2005 byPaul TurleyandDan Wood Wrox Press 2006 (594 pages) ISBN:076457955X Prepare for the ever-increasing demands of programming. Beginning with an ...
### 使用Microsoft SQL Server 2008 Transact-SQL 编写查询 #### 概述 本课程旨在为学生提供使用Microsoft SQL Server 2008中的Transact-SQL语言编写基本查询所需的技能与知识。课程结束后,学员将能够熟练地使用...
《SQL Server 数据库》Transact-SQL程序设计实验报告主要关注了Transact-SQL语言的基础应用,涵盖了注释、变量、运算符、函数以及流程控制语句的使用。实验的目标是帮助学生掌握这些核心概念,并通过实际操作来提升...
Transact-SQL不仅支持数据定义语言(DDL)、数据操纵语言(DML)和数据控制语言(DCL),还提供了一系列扩展功能,如存储过程、触发器、函数等,这些功能极大地增强了SQL Server的功能性和灵活性。 #### 三、本书...
本教程专注于Microsoft SQL Server 2012中的Transact-SQL(T-SQL)语言,这是SQL Server的主要查询语言,用于数据操作、查询、存储过程和数据库对象的编程。T-SQL是SQL Server开发者的核心技能,无论你是新手还是...
《Transact-SQL权威指南》是一本深入探讨SQL在数据库管理中的应用的书籍,主要针对Transact-SQL,这是Microsoft SQL Server所使用的SQL方言。本书旨在帮助读者掌握T-SQL的高级技巧,优化性能,并利用其强大的功能...
SQL(Structured Query Language)是用于管理和处理关系数据库的强大工具,而T-SQL(Transact-SQL)是SQL Server的扩展,增加了诸如事务处理、存储过程和触发器等高级功能。对于SQL Server 2012,T-SQL的掌握至关...
Transact-SQL结合了SQL的标准特性与额外的功能,如事务处理、存储过程、触发器等,以支持更复杂的数据管理和应用开发需求。 #### 描述:Sybase Transact-SQL用户指南 用户指南旨在为数据库管理员、开发者和用户...