返回顶部
首页 > 资讯 > 数据库 >sqlserver 中怎么实现触发器
  • 458
分享到

sqlserver 中怎么实现触发器

2024-04-02 19:04:59 458人浏览 泡泡鱼
摘要

sqlserver 中怎么实现触发器,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。总结常用基本点如下: 1、触发器有两种类型:数

sqlserver 中怎么实现触发器,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

总结常用基本点如下: 

1、触发器有两种类型:数据定义语言触发器(DDL触发器)和数据操纵语言触发器(DML触发器)。   DDL触发器:在用户对数据库执行数据定义(CREATE、ALTER、DROP或相似的语句)对数据库结构进行修改时激活而做出响应。   DML触发器:在用户对数据库执行数据操作时发生,触发器中的代码会被自动调用。 

2、DML触发器分类:Insert触发器、Delete触发器、Update触发器、上面任意类型混合。 

3、触发器创建语法:复制代码 代码如下: CREATE TRIGGER <trigger name> ON <table or view> {{{FOR|AFTER} <[INSERT] [,] [UPDATE],[DELETE]>}|INSTEAN OF} AS <sql statement>

4、触发器必须附加到表或视图上,触发器不能单独存在。AFTER或FOR触发器不支持视图,INSTEAD OF支持表或视图。 

5、INSERT触发器中,SQL Server 会创建一个插入行的副本,并把该副本插入到一个特殊表Insert表中,该表只在触发器作用域内存在。 

6、DELETE触发器中,SQL Server 会创建一个删除行的副本,并把该副本插入到一个特殊表Delete表中,该表只在触发器作用域内存在。 

7、UPDATE触发器中,SQL Server认为更新的记录是删除了现有的记录,插入更新后的新纪录,所以UPDATE触发器中包含Insert和Delete两个特殊表,也是只存在触发器作用域内,这两个表的行数完全一样。 

8、触发器尽可能简短,因为触发器和触发器内的语句被一同处理,即直到语句执行完成才算是触发器完成。如果代码很长那触发器运行时间就会很长。 下面是个实现自动编号功能的例子:复制代码 代码如下: --有两张表,客户表和项目表,要求:新建项目时自动生成项目编号,每个不同的客户的项目的编号从1开始 --项目编号格式为PJ+"-"+"客户编号"+"-"+"日期"+"-"+"流水号" --如项目编号:PJ-ABCD-120805-0001 create table testAccount --创建测试客户表 ( tAccName nvarchar(100), --客户姓名 tAccId nvarchar(32) --客户编号 ) create table testProject --创建测试项目表 ( tProName nvarchar(100), --项目名称 tProId nvarchar(32), --项目编号 tIdAcc nvarchar(100), --客户编号 tProGuid nvarchar(64) --guid ) Go create trigger T_AutoNumber on testProject after insert as begin declare @one nvarchar(8), --编号第一部分,PJ @two nvarchar(32), --编号第二部分,客户编号 @three nvarchar(8), --编号第三部分,日期 @four int, --编号第四部分,流水号 @guid nvarchar(64) --guid set @one='PJ' set @three= convert( varchar(8),GETDATE(),112) --从Inserted副本表里获取当前插入数据的客户编码和guid select @two=tIdAcc,@guid=tProGuid from Inserted --获取编号最后四位 select @four=max(cast(right(tProId,4)as int)) from testProject where tIdAcc=@two --对每一个新客户的流水号都是从1开始,已存在客户为最大流水号加1 if @four is null set @four=0 else set @four=cast(@four as int) set @four=@four+1 update testProject set tProId=@one+'-'+@two+'-'+@three+'-'+right('0000'+cast(@four as varchar),4) where tProGuid=@guid end go --生成测试表数据 insert into testAccount values ('小小鸭有限公司','XXYGS') insert into testAccount values ('丑小鸭有限公司','CXY') insert into testProject (tProName,tIdAcc,tProGuid)values ('小鸭成长项目','XXYGS',newid()) insert into testProject (tProName,tIdAcc,tProGuid)values ('小鸭学游泳项目','XXYGS',newid()) insert into testProject (tProName,tIdAcc,tProGuid)values ('丑小鸭成长项目','CXY',newid()) select * from testProject drop table testAccount drop table testProject

9.调试触发器:新建查询窗口,输入下来代码,按下F11即可逐语句运行下列脚本,进入到触发器中。也可在触发器里设置断点,然后按F11逐语句执行。复制代码 代码如下: begin tran insert into testProject (tProName,tIdAcc,tProGuid)values ('小鸭成长项目','XXYGS',newid()) insert into testProject (tProName,tIdAcc,tProGuid)values ('小鸭学游泳项目','XXYGS',newid()) insert into testProject (tProName,tIdAcc,tProGuid)values ('丑小鸭成长项目','CXY',newid()) if @@TRANCOUNT>0 rollback tran

关于sqlserver 中怎么实现触发器问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网数据库频道了解更多相关知识。

您可能感兴趣的文档:

--结束END--

本文标题: sqlserver 中怎么实现触发器

本文链接: https://lsjlt.com/news/58593.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • sqlserver 中怎么实现触发器
    sqlserver 中怎么实现触发器,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。总结常用基本点如下: 1、触发器有两种类型:数...
    99+
    2024-04-02
  • sqlserver中怎么实现触发器和游标
    本篇文章为大家展示了sqlserver中怎么实现触发器和游标,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。代码如下: Create trigger tri_wk_...
    99+
    2024-04-02
  • SqlServer怎么实现类似Oracle的before触发器
    本篇内容主要讲解“SqlServer怎么实现类似Oracle的before触发器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SqlServer怎么实现类似Or...
    99+
    2024-04-02
  • sqlserver触发器怎么创建
    要创建一个SQL Server触发器,可以遵循以下步骤: 打开SQL Server管理工具,连接到目标数据库。 在数据库中找到需要...
    99+
    2024-02-29
    sqlserver
  • 什么是触发器在SQLServer中
    在SQL Server中,触发器是一种特殊的存储过程,可以自动执行指定的操作,例如在对表进行插入、更新或删除操作时触发。触发器可以在...
    99+
    2024-04-09
    SQLServer
  • 什么是SQLServer中的触发器
    在SQL Server中,触发器是一种特殊的存储过程,它会在特定的数据库操作(如INSERT、UPDATE、DELETE)发生时自动...
    99+
    2024-04-09
    SQLServer
  • 怎样在SQLServer中创建触发器
    在 SQL Server 中,可以使用以下语法创建触发器: CREATE TRIGGER trigger_name ON table...
    99+
    2024-04-09
    SQLServer
  • mysql触发器怎么实现
    这篇文章主要介绍了mysql触发器怎么实现,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。  MySQL 触发器简单实例 1、语...
    99+
    2024-04-02
  • sql中怎么创建sqlserver数据库触发器
    这篇文章将为大家详细讲解有关sql中怎么创建sqlserver数据库触发器,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。代码如下: --会员表 if ob...
    99+
    2024-04-02
  • SqlServer中触发器的作用是什么
    这期内容当中小编将会给大家带来有关SqlServer中触发器的作用是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。查询数据库中所有触发器:select&nb...
    99+
    2024-04-02
  • SQLServer触发器怎么调用JavaWeb接口
    这篇文章主要为大家展示了“SQLServer触发器怎么调用JavaWeb接口”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SQLServer触发器怎么调用JavaWeb接口”这篇文章吧。这几天接...
    99+
    2023-06-22
  • SqlServer系列笔记——触发器
    触发器是一种特殊类型的存储过程,它不同于前面介绍过的一般的存储过程。一般的存储过程通过存储过程名称被直接调用,而触发器主要是通过事件进行触发而被执行。触发器是一个功能强大的工具,在表中数据发生变化时自动强制...
    99+
    2024-04-02
  • sqlserver触发器如何查看
    要查看 SQL Server 触发器,请按照以下步骤操作: 打开 SQL Server Management Studio(SSM...
    99+
    2024-02-29
    sqlserver
  • java怎么实现数据库触发器
    在Java中,可以通过使用JDBC或Hibernate等框架来实现数据库触发器。1. 使用JDBC实现数据库触发器:a. 首先,需要...
    99+
    2023-10-12
    java 数据库
  • SqlServer系列笔记——触发器2
    一、创建一个简单的触发器触发器是一种特殊的存储过程,类似于事件函数,SQL Server 允许为 INSERT、UPDATE、DELETE 创建触发器,即当在表中插入、更新、删除记录时,触发一个或一...
    99+
    2024-04-02
  • oracle触发器怎么实现自增功能
    要实现自增功能,可以通过在触发器中使用序列来实现自增的效果。以下是一个示例代码: CREATE SEQUENCE my_seq ST...
    99+
    2024-04-09
    oracle
  • SQLServer的触发器你了解多少
    目录什么是触发器DML触发器分为:创建触发器创建insert类型触发器创建delete类型触发器创建update类型触发器update更新列级触发器instead of类型...
    99+
    2024-04-02
  • SQLServer中如何使用触发器实现数据约束和自动化操作
    在SQLServer中,触发器是一种特殊的存储过程,可以在特定的表上自动执行。通过触发器,可以实现数据约束和自动化操作。下面是一个示...
    99+
    2024-04-02
  • mysql触发器如何实现
    小编给大家分享一下mysql触发器如何实现,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!MySQL触发器语法详解:触发器 tri...
    99+
    2024-04-02
  • oracle触发器定时触发怎么配置
    在Oracle数据库中,可以使用触发器来定时触发某些操作。触发器可在以下情况下自动触发:在插入、更新或删除表中的数据时,或在满足某些...
    99+
    2023-08-09
    oracle
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作