SQLServer触发器创建、删除、修改、查看示例步骤-十年如一-博客园 sqlserver 触发器

一﹕触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约`束。
二﹕ SQL Server为每个触发器都创建了两个专用表﹕Inserted表和Deleted表。这两个表。
一﹕触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约`束。 二﹕ SQLServer为每个触发器都创建了两个专用表﹕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表刚刚建立﹐其它任何操作还没有发生时被执行。因为Insteadof 触发器在约束之前执行﹐所以它可以对约束进行一些预处理。 五﹕使用T-SQL语句来创建触发器
基本语句如下﹕ createtrigger trigger_name on{table_name | view_name} {for |After | Instead of } [ insert,update,delete ] as sql_statement
六﹕删除触发器:
基本语句如下﹕
droptrigger trigger_name
七:查看数据库中已有触发器:
-- 查看数据库已有触发器use jxcSoftwaregoselect * from sysobjects where xtype='TR'
-- 查看单个触发器exec sp_helptext '触发器名'
八﹕修改触发器:
基本语句如下﹕ altertrigger 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 orderinserton ordersafter insertasif (select status from goods,insertedwhere goods.name=inserted.goodsname)=1beginprint 'the goods is being processed'print 'the order cannot be committed'rollback transaction --回滚﹐避免加入end2﹕在Orders表建立一个插入触发器﹐在添加一条订单时﹐减少Goods表相应的货品记录中的库存。create trigger orderinsert1on ordersafter insertasupdate goods set storage=storage-inserted.quantityfrom goods,insertedwheregoods.name=inserted.goodsname3﹕在Goods表建立删除触发器﹐实现Goods表和Orders表的级联删除。create trigger goodsdeleteon goodsafter deleteasdelete from orderswhere goodsname in(select name from deleted)4﹕在Orders表建立一个更新触发器﹐监视Orders表的订单日期(OrderDate)列﹐使其不能手工修改.create trigger orderdateupdateon ordersafter updateasif update(orderdate)beginraiserror(' orderdate cannot be modified',10,1)rollback transactionend5﹕在Orders表建立一个插入触发器﹐保证向Orders表插入的货品名必须要在Goods表中一定存在。create trigger orderinsert3on ordersafter insertasif (select count(*) from goods,inserted wheregoods.name=inserted.goodsname)=0beginprint ' no entry in goods for this order'rollback transactionend
6:Orders表建立一个插入触发器,保证向Orders表插入的货品信息要在Order表中添加
alter trigger addOrderon Ordersfor insertasinsert into Orderselect inserted.Id, inserted.goodName,inserted.Number frominserted

  

爱华网本文地址 » http://www.aihuau.com/a/25101011/68520.html

更多阅读

看看撒贝宁、何韵诗、范伟、汤镇业的新浪微博 汤镇业的老婆

今晚八点过后,闲来无事,便想见识见识别人的微博。点开本微博左上角的“新浪微博”,便看到了网管推荐的四个于昨、今两天才开的名人微博。排在最前面的是央视“今日说法”节目主持人撒贝宁。他是今天17:59用手机发了微博的第一个“短语

校本培训、校本教研三年规划 校本研修三年规划

鲍七小学校本培训、校本教研三年规划(2011年8月至2014年7月)一、发展优势1、学校条件设施完备学校全面实施校舍改造工程,建设了一所设施条件优良的现代化校园,优化了育人环境,特别是为教师营造了良好的教育教学信息化环境。2、师资

教你如何了解查看博客的等级、积分 链家经纪人积分等级

博客等级、积分是怎么回事文/扬帆 编辑制作/知己难求网易博客在不断更新,开发了很多新项目,让很多朋友措手不及,很难适应其变化的速度,其实网易博客是很好的交流平台,它的发展是必要的,要不就难生存,雅虎博客已经关闭了,所以我们要共同维护

声明:《SQLServer触发器创建、删除、修改、查看示例步骤-十年如一-博客园 sqlserver 触发器》为网友忆纷飞分享!如侵犯到您的合法权益请联系我们删除