专栏首页程序猿SQL sever 触发器

SQL sever 触发器

一: 触发器 是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新 记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约束。 二: SQL Server 为每个触发器都创建了两个专用表 :Inserted表和Deleted表。这两个表。 一 : 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新 记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约束。 二: SQL Server 为每个触发器都创建了两个专用表:Inserted表和Deleted表。 这两个表由系统来维护﹐它们存在于内存中而不是在数据库中。这两个表的结构总是与被该触发器作 用的表的结构相同。触发器执行完成后﹐与该触发器相关的这两个表也被删除。 使用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 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 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 在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 在Goods表建立删除触发器﹐实现 Goods 表和Orders表的级联删除。 create trigger goodsdelete on goods after delete as selete from orders where goodsname in (select name from deleted) 在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 在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 Orders 表建立一个插入触发器,保证向 Orders表插入的货品信息要在Order表中添加 alter trigger addOrder on Orders

本文分享自微信公众号 - 数据库SQL(SQLdba),作者:Admin

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-03-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MySQL操作工资表,获取累计工资和月平均工资

    根据一个实际的需求案例,描述一下:如何在工资条中添加获取累计工资[字段]和月平均工资[字段]

    赵腰静
  • SQL Server基础SQL脚本之分区表、分区方案

    代码120行左右 本系列,几乎都是代码,记得当时写的时候用的是微软的官方实例数据库AdventureWorks_Data.mdf、AdventureWork...

    赵腰静
  • mssql注入

    一些sql扩展 xp_regaddmultistring xp_regdeletekey 删除键名 xp_regdeletevalue 删除键值 xp_...

    赵腰静
  • mysql 触发器

    版权声明:Copyright © ...

    zhengzongwei
  • MySQL触发器知识整理

    在mysql中所有触发器的定义都存在INFORMATION_SCHEMA 数据库的TRIGGERS表格中,可以通过SELECT来查看。

    挨踢小子部落阁
  • Django-12 通过邮件找回密码

    首先修改django_project\django_project\settings.py,添加邮件相关的配置:

    亚乐记
  • Golang视角下的设计模式

    这篇文章想聊聊Golang语言下的设计模式问题,我觉得这个话题还是比较有意思的。Golang没有像java那样对设计模式疯狂的迷恋,而是摆出了一份“看庭前花开花...

    李海彬
  • Golang视角下的设计模式

    这篇文章想聊聊Golang语言下的设计模式问题,我觉得这个话题还是比较有意思的。Golang没有像java那样对设计模式疯狂的迷恋,而是摆出了一份“看庭前花开花...

    李海彬
  • JAVA CDI 学习(2) - Scope 生命周期

    在上一节中,我们已经知道了如何用@Inject实现基本注入,这一节研究Bean实例注入后的“生命周期”,web application中有几种基本的生命周期(不...

    菩提树下的杨过
  • 从图灵机到操作系统的启动

    版权声明:本文为博主原创文章,转载请注明博客地址: https://blog.csdn.ne...

    zy010101

扫码关注云+社区

领取腾讯云代金券