`
乾途Zane
  • 浏览: 14402 次
  • 性别: Icon_minigender_1
  • 来自: 长春
文章分类
社区版块
存档分类
最新评论

SQL Server触发器创建、删除、修改、查看示例步骤

 
阅读更多

一﹕ 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约`束。

二﹕ SQL Server为每个触发器都创建了两个专用表﹕Inserted表和Deleted表。这两个表。

一﹕ 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约`束。

二﹕ SQL Server为每个触发器都创建了两个专用表﹕Inserted表和Deleted表。这两个表由系统来维护﹐它们存在于内存中而不是在数据库中。这两个表的结构总是与被该触发器作用的表的结构相同。触发器执行 完成后﹐与该触发器相关的这两个表也被删除。
Deleted表存放由于执行Delete或Update语句而要从表中删除的所有行。
Inserted表存放由于执行Insert或Update语句而要向表中插入的所有行。
三﹕Instead of 和 After触发器
SQL Server2000提供了两种触发器﹕Instead of 和After 触发器。这两种触发器的差别在于他们被激活的同﹕

Instead of触发器用于替代引起触发器执行的T-SQL语句。除表之外﹐Instead of 触发器也可以用于视图﹐用来扩展视图可以支持的更新操作。

After触发器在一个Insert,Update或Deleted语句之后执行﹐进行约束检查等动作都在After触发器被激活之前发生。After触发器只能用于表。

一个表或视图的每一个修改动作(insert,update和delete)都可以有一个instead of 触发器﹐一个表的每个修改动作都可以有多个After触发器。
四﹕触发器的执行过程
如果一个Insert﹑update或者delete语句违反了约束﹐那幺After触发器不会执行﹐因为对约束的检查是在After触发器被激动之前发生的。所以After触发器不能超越约束。

Instead of 触发器可以取代激发它的操作来执行。它在Inserted表和Deleted表刚刚建立﹐其它任何操作还没有发生时被执行。因为Instead of 触发器在约束之前执行﹐所以它可以对约束进行一些预处理。

五﹕使用T-SQL语句来创建触发器

基本语句如下﹕
create trigger trigger_name
on {table_name | view_name}
{for | After | Instead of }
[ insert, update,delete ]
as
sql_statement

六﹕删除触发器:

基本语句如下﹕

drop trigger trigger_name

七:查看数据库中已有触发器:

-- 查看数据库已有触发器
use jxcSoftware
go
select * from sysobjects where xtype='TR'

-- 查看单个触发器
exec sp_helptext '触发器名'

八﹕修改触发器:

基本语句如下﹕
alter trigger trigger_name
on {table_name | view_name}
{for | After | Instead of }
[ insert, update,delete ]
as
sql_statement

九﹕相关示例﹕
1﹕在Orders表中建立触发器﹐当向Orders表中插入一条订单记录时﹐检查goods表的货品状态status是否为1(正在整理)﹐是﹐则不能往Orders表加入该订单。
create trigger orderinsert
on orders
after insert
as
if (select status from goods,inserted
where goods.name=inserted.goodsname)=1
begin
print 'the goods is being processed'
print 'the order cannot be committed'
rollback transaction --回滚﹐避免加入
end
2﹕在Orders表建立一个插入触发器﹐在添加一条订单时﹐减少Goods表相应的货品记录中的库存。
create trigger orderinsert1
on orders
after insert
as
update goods set storage=storage-inserted.quantity
from goods,inserted
where
goods.name=inserted.goodsname
3﹕在Goods表建立删除触发器﹐实现Goods表和Orders表的级联删除。
create trigger goodsdelete
on goods
after delete
as
delete from orders
where goodsname in
(select name from deleted)
4﹕在Orders表建立一个更新触发器﹐监视Orders表的订单日期(OrderDate)列﹐使其不能手工修改.
create trigger orderdateupdate
on orders
after update
as
if update(orderdate)
begin
raiserror(' orderdate cannot be modified',10,1)
rollback transaction
end
5﹕在Orders表建立一个插入触发器﹐保证向Orders表插入的货品名必须要在Goods表中一定存在。
create trigger orderinsert3
on orders
after insert
as
if (select count(*) from goods,inserted where goods.name=inserted.goodsname)=0
begin
print ' no entry in goods for this order'
rollback transaction
end

6:Orders表建立一个插入触发器,保证向Orders表插入的货品信息要在Order表中添加

alter trigger addOrder
on Orders
for insert
as
insert into Order
select inserted.Id, inserted.goodName,inserted.Number from inserted

=============================================================================
本文摘取自:
感谢作者!
分享到:
评论

相关推荐

    SQL_Server触发器创建、删除、修改、查看示例

    ### SQL Server 触发器创建、删除、修改、查看示例 #### 一、概述 在 SQL Server 中,触发器是一种特殊类型的存储过程,它自动执行响应数据更改(如 INSERT、UPDATE 或 DELETE)操作。触发器可以确保数据完整性,...

    第05节:SQLServer触发器Demo源代码.rar

    这个资源“第05节:SQLServer触发器Demo源代码.rar”很可能是包含了一个C#项目,该项目演示了如何在应用程序中创建、使用和管理SQL Server触发器。通过学习和理解这些示例代码,开发者可以更好地掌握在C#环境中操作...

    SQL Server触发器和事务用法示例

    在SQL Server中,触发器和事务是数据库管理中不可或缺的部分,它们主要用于确保数据的完整性和一致性。触发器是一种特殊的存储过程,它会在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行,而事务则...

    SQL 2005中存储过程和触发器调试大法.doc

    本文将详细介绍如何在SQL Server 2005中调试存储过程和触发器,重点解析调试方法及步骤。 #### SQL Server 2000与2005调试对比 在SQL Server 2000中,调试存储过程非常直观,只需在对象浏览器中找到存储过程,右键...

    sql 在更新某字段后写入日志触发器

    本篇文章将详细介绍如何在SQL Server中创建一个触发器,当某个表中的特定字段被更新时,记录相关信息到另一个表中,以实现类似日志记录的功能。 #### 触发器概述 触发器是SQL Server提供的一种机制,可以在表或视图...

    chufaqi.rar_sql 触发器_创建触发器_触发器

    压缩包内的`触发器.doc`文件可能包含详细的创建和使用触发器的步骤、示例以及最佳实践。请查阅此文档以获取更深入的理解和实际操作指导。 七、资源链接 `www.pudn.com.txt`文件可能是提供了一个链接或资源,可能...

    SQL server自带的Northwind 和pubs示例数据库

    在SQL Server 2000版本中,它附带了两个非常著名的示例数据库:Northwind和Pubs,这些数据库经常被用于教学、学习和演示SQL Server的功能。 Northwind数据库是SQL Server的标志性示例数据库之一,它模拟了一个全球...

    SQL Server 2005编程入门经典(第2版)之存储过程-触发器.pdf

    在学习存储过程和触发器时,你将需要掌握如何创建、修改和删除这些对象,以及如何在T-SQL中编写控制流程语句(如IF-ELSE、BEGIN-END、WHILE等)。此外,你还需要了解如何调试存储过程,以及如何优化其性能,这可能...

    MS SQL触发器简单测试使用

    在提供的文件列表中,"SQL Server触发器创建、删除、修改、查看示例步骤(简单教程).txt"应该是详细的操作指南,它会指导你完成上述过程。"说明.txt"可能是关于如何使用这些示例的额外说明。"DBUtility"、"Data"、...

    通过触发器实现数据库同步(原创)

    以下是一个简单的触发器示例,用于将`dbo.regs`表中的新数据同步到另一个数据库中的相同表: ```sql ALTER TRIGGER trigger_Reg_insert ON [dbo].regs FOR INSERT AS BEGIN INSERT INTO OPENROWSET('SQLOLEDB', '...

    SqlServer转换Oracle.docx

    本文将围绕《SqlServer转换Oracle.docx》文档中的关键知识点进行详细解析,帮助读者更好地理解和掌握SQL Server到Oracle迁移过程中的技术要点。 #### 二、连接字符串与数据源处理 在文档中提到了一种获取连接字符串...

    SQL中如何创建触发器.pdf

    SQL Server是一个广泛使用的RDBMS,它支持通过Transact-SQL(T-SQL)语言来创建触发器。为了创建触发器,首先需要理解触发器的基本语法和组成部分。触发器的创建通常包括以下步骤和元素: 1. 指定触发器类型:...

    触发器、存储过程等上机作业

    通过以上四个知识点的学习,我们可以深入理解如何利用SQL Server中的存储过程和触发器来实现复杂的数据处理和控制功能。这些技术不仅有助于提高应用程序的性能和安全性,还能帮助我们更有效地管理数据库中的数据。

    SQL级联触发器之deleted课件

    在SQL Server数据库管理系统中,触发器是一种特殊类型的存储过程,它自动执行当特定的数据操作(如INSERT、UPDATE或DELETE)发生时。级联触发器则是指在一个触发器中调用另一个触发器,形成连锁反应,这常用于维护...

    sql2012数据库示例

    标题中的"sql2012数据库示例"指的是SQL Server 2012这个数据库管理系统的一个实例或集合,其中包含了各种示例数据和脚本,用于帮助用户学习和理解SQL Server 2012的功能和操作。这些示例通常涵盖查询、数据管理、...

    SQL触发器的使用方法,

    在SQL Server中,触发器主要有以下三种类型: 1. **INSERT触发器**:当向表中插入新记录时触发。例如,当新的学生信息被添加到"Student"表中时,可能需要同步更新相关的" BorrowRecord"表。 2. **UPDATE触发器**:...

    SQL Server2000中文版基础教程-源代码

    学习如何创建、修改和删除这些对象是SQL Server 2000基础知识的重要部分。 4. **SQL查询语言**: 结构化查询语言(SQL)是操作SQL Server的主要工具。学习SELECT语句用于数据查询,INSERT、UPDATE和DELETE语句用于...

    在SQLServer2008中存储过程和触发器是两个重要的数据库对象.pdf

    在SQL Server 2008中,存储过程和触发器是数据库管理和开发中的核心组件,它们为数据库的高效运作和复杂业务逻辑的实现提供了强大的支持。 存储过程是一组预先编译的Transact-SQL语句,它们可以包含控制流语句,...

    SQL SERVER CLR 讲解及小例

    SQL Server CLR(Common Language Runtime)是微软SQL Server数据库引擎中的一个功能,允许开发人员使用.NET Framework的任何语言(如C#、VB.NET或F#)编写存储过程、触发器、用户定义函数(UDFs)、类型和其他...

    教您如何编写sql触发器

    以下是如何创建和使用SQL Server触发器的详细步骤和示例: 1. **创建触发器的基本语法**: 创建触发器的基本结构如下: ```sql CREATE TRIGGER <Schema_Name>. ON <Schema_Name>. {AFTER | BEFORE} AS ...

Global site tag (gtag.js) - Google Analytics