社区
疑难问题
帖子详情
高级问题:如何在一个触发器或者存储过程中得知自己是否处在一个事务之中?
spotboy
2003-12-02 09:17:40
我现在正在写一个触发器,需要知道这个触发器的执行是否是包含在一个事务之中,能否得到这个事务的事务编号?
...全文
73
11
打赏
收藏
高级问题:如何在一个触发器或者存储过程中得知自己是否处在一个事务之中?
我现在正在写一个触发器,需要知道这个触发器的执行是否是包含在一个事务之中,能否得到这个事务的事务编号?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
spotboy
2003-12-02
打赏
举报
回复
但是这个只是知道当前的活动事务,是否可以在一个数据库的范围内确切知道何时一个事务已经启动,何时一个事务已经结束呢?
shuiniu
2003-12-02
打赏
举报
回复
每次进入触发器,@@TRANCOUNT 就增加 1,即使在自动提交模式下也是如此。(系统将触发器视作隐性嵌套事务。)
zarge
2003-12-02
打赏
举报
回复
@@TRANCOUNT
返回当前连接的活动事务数。
语法
@@TRANCOUNT
返回类型
integer
注释
BEGIN TRANSACTION 语句使 @@TRANCOUNT 递增 1。ROLLBACK TRANSACTION 将 @@TRANCOUNT 递减为 0,但 ROLLBACK TRANSACTION savepoint_name 语句并不影响 @@TRANCOUNT 值。COMMIT TRANSACTION 或 COMMIT WORK 将 @@TRANCOUNT 递减 1。
示例
下面的示例用 @@TRANCOUNT 测试应该提交的打开事务。
BEGIN TRANSACTION
UPDATE authors SET au_lname = upper(au_lname)
WHERE au_lname = 'White'
IF @@ROWCOUNT = 2
COMMIT TRAN
IF @@TRANCOUNT > 0
BEGIN
PRINT 'A transaction needs to be rolled back'
ROLLBACK TRAN
END
shuiniu
2003-12-02
打赏
举报
回复
触发器应该是嵌套事务!
sdhdy
2003-12-02
打赏
举报
回复
触发器可以说是一个比较特殊的事务吧!
realgz
2003-12-02
打赏
举报
回复
实验过了,确实返回的是触发器的事务号。
zjcxc
2003-12-02
打赏
举报
回复
如果是触发器中处理,那就肯定是事务中
因为触发器本身就是一个事务.
zjcxc
2003-12-02
打赏
举报
回复
@@TRANCOUNT
返回当前连接的活动事务数。
语法
@@TRANCOUNT
返回类型
integer
注释
BEGIN TRANSACTION 语句使 @@TRANCOUNT 递增 1。ROLLBACK TRANSACTION 将 @@TRANCOUNT 递减为 0,但 ROLLBACK TRANSACTION savepoint_name 语句并不影响 @@TRANCOUNT 值。COMMIT TRANSACTION 或 COMMIT WORK 将 @@TRANCOUNT 递减 1。
示例
下面的示例用 @@TRANCOUNT 测试应该提交的打开事务。
BEGIN TRANSACTION
UPDATE authors SET au_lname = upper(au_lname)
WHERE au_lname = 'White'
IF @@ROWCOUNT = 2
COMMIT TRAN
IF @@TRANCOUNT > 0
BEGIN
PRINT 'A transaction needs to be rolled back'
ROLLBACK TRAN
END
pengdali
2003-12-02
打赏
举报
回复
select @@trancount
触发器本身就是事务内的。而不是全局的。
realgz
2003-12-02
打赏
举报
回复
应该不行的吧,这要求和要确切知道宇宙之外的世界一样。
realgz
2003-12-02
打赏
举报
回复
关注。
day47 视图、
触发器
、
事务
、
存储过程
、函数、流程控制、索引原理
目录一、视图1.1、创建视图1.2、使用视图1.3、修改视图1.4、删除视图二、
触发器
2.1、创建
触发器
2.2、使用
触发器
2.3、删除
触发器
三、
事务
3.1、什么是
事务
3.2、为什么需要
事务
3.3、
事务
特性(4种)3.4、
事务
运行模式(3种)3.5、pymysql事物处理四、
存储过程
4.1、介绍4.2、创建简单的
存储过程
(无参)4.3、创建简单的
存储过程
(有参)4.4、应用程序执行
存储过程
4.5、删除
存储过程
五、函数5.1、自定义函数5.2、删除函数5.3、执行函数六、流程控制6.1、条件语句6.2、循环语句
SQL Server
存储过程
与
触发器
实战指南:从基础到
高级
应用
本文深入探讨了SQL Server
中
存储过程
与
触发器
的核心概念与实战应用。
存储过程
作为预编译的SQL语句集,能有效封装复杂业务逻辑,提升代码复用与性能。
触发器
则作为事件驱动的自动守护者,在数据增删改时自动执行,是实现数据一致性、审计日志和级联操作的利器。文章通过从基础创建到
高级
应用的详细指南,并结合性能优化与真实审计系统案例,帮助开发者掌握这两大关键数据库对象,构建更健壮、高效的数据库应用。
MySql进阶篇---006:存储引擎,索引,SQL优化,视图、
存储过程
、变量、流程控制、游标、存储函数、
触发器
,主键如何设计,
事务
MySql进阶篇---006:存储引擎,索引,SQL优化,视图、
存储过程
、变量、流程控制、游标、存储函数、
触发器
MySQL-视图_
触发器
_
事务
_
存储过程
_函数_流程控制_索引原理
MySQL 1. 视图 1. 视图介绍 1. 视图是
一个
虚拟表(非真实存在),其本质是: 根据SQL语句获取动态的数据集,并为其命名 2. 用户使用时只需使用 '名称' 即可获取结果集,可以将该结果集当做表来使用 3. 修改视图记录,修改的是原始表 2. 创建视图 # emp 数据表 select * from emp; +----+------------+--------+------+--------+ | id | name | sex | age | dep_id | +--
视图,
事务
,
存储过程
,if,
触发器
,索引
视图 create[or replace]#如果存在就替换 view 视图名字(#可防止标题栏字段) as (select name,salary from em); alter view 视图名字 as (select name,salary from em); 等价于上面的 or replace 增删改查等同于 对于原表进行增删改查 视图只有结构无数据 类...
疑难问题
22,295
社区成员
121,729
社区内容
发帖
与我相关
我的任务
疑难问题
MS-SQL Server 疑难问题
复制链接
扫一扫
分享
社区描述
MS-SQL Server 疑难问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章