社区
疑难问题
帖子详情
在Update触发器TRIGGER中,怎样判断是谁触发器的?
foolishchao
2002-12-18 10:42:17
在触发器TRIGGER中,怎样判断是谁(程序、触发器、外键级联更新)触发的?
...全文
65
34
打赏
收藏
在Update触发器TRIGGER中,怎样判断是谁触发器的?
在触发器TRIGGER中,怎样判断是谁(程序、触发器、外键级联更新)触发的?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
34 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
foolishchao
2003-01-06
打赏
举报
回复
看来可能没有人能提供答案了,只好结帐了。在此多谢各位网友了。
ahead_lin
2003-01-05
打赏
举报
回复
占个位置..好好学习...
foolishchao
2003-01-04
打赏
举报
回复
请版主帮忙。
txchen
2003-01-04
打赏
举报
回复
gz
xlhl
2002-12-27
打赏
举报
回复
学习
foolishchao
2002-12-27
打赏
举报
回复
怎样查?
OpenVMS
2002-12-27
打赏
举报
回复
应该可以查询父操作的OBJECT
foolishchao
2002-12-26
打赏
举报
回复
上面的回答都不可行。
tongki
2002-12-26
打赏
举报
回复
UP
harmfulbug
2002-12-23
打赏
举报
回复
經常問問題,歐也回答一次,我覺得可以考慮下面的思路:
1:Trigger是可以Nested,比方說A表的Trigger激發了B表的trigger,TRIGGER_NESTLEVEL(object_id(a))來判斷A表是否執行了Trigger,反之,那麼C表的這個Trigger不是A表的Trigger引發,可能是A表它幾連更新引發
2:利用sp_settriggerorder來指定同一個表的多個Trigger的執行順序,比方說A表可以Trigger1更新B表,B表幾連更新C表,A表同時Trigger2更新c表,那麼我指定Trigger2先于Trigger1執行,然後用TRIGGER_NESTLEVEL來判斷,如果第一次那麼肯定TRIGGER_NESTLEVEL返回1,那麼我知道是A表Trigger引發而不是B表幾連更新引發
3:直接查詢A表和B表中的值,如果A和B引發的語句以及A,b表中紀錄不是一樣的話,當然這個方法有點傻了
Chiff
2002-12-22
打赏
举报
回复
请看一下这个帖子是否对你有用。原理是得到该进程最后一次执行的sql语句
http://expert.csdn.net/Expert/topic/1256/1256806.xml?temp=.4463922
Rbuyangel
2002-12-22
打赏
举报
回复
真的学了好多东西,感谢!
foolishchao
2002-12-21
打赏
举报
回复
我的问题是:
a表是主键表,b是外键表,a表级联更新b表。
c表和a表结构类似,a表用触发器更新c表。
d表和b表结构类似,b表用触发器更新d表。
更新a表时数据更改的顺序
1、a表级联更新b表
2、b表触发器更新d表
3、a表触发器更新c表
现想在c表和d表之间建立外键关系,但问题是第2步违反c表和d表之间的外键约束。
CREATE TABLE [dbo].[a] (
[id] [int] NOT NULL,
CONSTRAINT [PK_a] PRIMARY KEY NONCLUSTERED(id)
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[b] (
[id] [int] NOT NULL ,
[name1] [char] (10) COLLATE Chinese_PRC_CI_AS NULL,
CONSTRAINT [FK_b_a] FOREIGN KEY ([id]) REFERENCES [dbo].[a] ([id]) ON UPDATE CASCADE
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[c] (
[id] [int] NOT NULL,
CONSTRAINT [PK_c] PRIMARY KEY NONCLUSTERED(id)
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[d] (
[id] [int] NOT NULL ,
[name2] [char] (10) COLLATE Chinese_PRC_CI_AS NULL,
) ON [PRIMARY]
GO
CloneCenter
2002-12-21
打赏
举报
回复
好多星星啊!眼睛都花了,只好 UP 了。
wgy2008
2002-12-21
打赏
举报
回复
关注
CoolAbu
2002-12-21
打赏
举报
回复
Nod...
Studying...
foolishchao
2002-12-20
打赏
举报
回复
我现在就是这样做,用触发器实现外键的功能。
CCEO
2002-12-20
打赏
举报
回复
人家说foolishchao(亚超) 是高手,我能想到的高手一定也想到过了,不过还是要提一个想法:
我理解你的表的关系是这样的:a表与b表、c表都有级联关系,这样当a表修改时同时级联修改了b表、c表,就完事了,不用再作处理;但是b表可能单独修改,这时需要同时修改c表,所以需要触发器来做这个修改。能不能在b表和c表之间定义级联,而不需要触发器呢?
CCEO
2002-12-20
打赏
举报
回复
不是办法的办法:
级联和触发器不要一起使用,也就是说,对一些相关的多个表的集合,如果你需要用触发器查明修改发出的应用,就不要使用级联,而是全部用触发器。
foolishchao
2002-12-19
打赏
举报
回复
不好意思,对这个判断没有用。
加载更多回复(14)
trigger
触发器
trigger
触发器
trigger
触发器
--行级
触发器
create or replace
trigger
insert_person after insert on person for each row begin insert into person2 values(:new.id,:new.name,:new.password); end; create or replace
trigger
update
_...
Oracle
触发器
trigger
详解
每当一个特定的数据操作语句(insert
update
delete)在指定的表上发出时,Oracle自动执行
触发器
中
定义的语句序列。 举个简单的例子: 当员工表
中
新增一条记录后,自动打印“成功插入新员工” create or replace ...
Python系列游戏之四子连珠游戏
使学员们在Python学习过程
中
,在以下的八个方面,有所提高: 1、Python
中
类的使用 2、Python
中
模块的相互调用 3、tkinter模块高级绘图、动画的使用方法 4、Python
中
键盘事件的绑定 5、构造方法、循环语句 6、列表的...
mysql
触发器
之创建使用
触发器
简单示例
本文实例讲述了mysql
触发器
之创建使用
触发器
。分享给大家供大家参考,具体如下: 我们可以可以使用CREATE
TRIGGER
语句创建一个新的
触发器
,来看下具体的语法: CREATE
TRIGGER
trigger
_name
trigger
_time
trigger
_...
MySQL
中
触发器
入门简单实例与介绍
创建
触发器
。创建
触发器
语法如下: CREATE
TRIGGER
trigger
_name
trigger
_time
trigger
_event ON tbl_name FOR EACH ROW
trigger
_stmt 其
中
trigger
_name标识
触发器
...
触发器
程序可以使用begin和end作为开始和结束,
中
疑难问题
22,210
社区成员
121,727
社区内容
发帖
与我相关
我的任务
疑难问题
MS-SQL Server 疑难问题
复制链接
扫一扫
分享
社区描述
MS-SQL Server 疑难问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章