数据库的触发器怎么查看(如何在数据库中查询出所有有触发器的表)

本文目录
如何在数据库中查询出所有有触发器的表
select name from sysobjects where xtype=’TR--所有触发器名称\x0d\x0aselect name from sysobjects where xtype=’P--所有存储过程\x0d\x0aselect name from sysobjects where xtype=’V--所有视图\x0d\x0aselect name from sysobjects where xtype=’U--所有表 \x0d\x0a全部禁用:Alter table t1 disable trigger all;\x0d\x0a全部生效:Alter table t1 enable trigger all;\x0d\x0a单个禁用:Alter table t1 disable trigger 触发器名;\x0d\x0a查出指定TR的内容:sp_helptext ’t_test\x0d\x0a查出所有非系统数据库并列出: \x0d\x0aselect * from sysdatabases where dbid》4 \x0d\x0a查出某表中所有字段名与字段类型:\x0d\x0aselect a.name as ,b.name as type\x0d\x0afrom syscolumns a,systypes b\x0d\x0awhere a.id=object_id(’employee’) and a.xtype=b.xtype!
如何了解触发器的执行信息
SQL Server数据库中触发器的类型有很多,并不是所有的触发器中EventDate函数都有效。通常情况下只有两种类型的触发器,即DDL触发器或者登陆触发器的内容应用这个函数时,这个函数才会返回相关的信息。如果这个函数有其它例程或者其它触发器调用,则其不会返回信息。即使这些例程由DDL或者登陆触发器进行调用。这句话是什么意思呢?也就是说,如果一个DDL触发器调用了一个例程,而这个例程中包含了EventData函数,则这个函数将不起作用,将不会返回任何信息。但是如果把这个函数换个位置,直接放置在DDL触发器下,而不是其引用的例程下面,那么这个EventData函数就会起效,就会把上面笔者谈到的内容收集起来告知给数据库管理员。为此数据库管理员在使用这个函数捕获触发器信息时,要特别注意这个函数的使用范围。笔者再强调一次,其知适用于DDL触发器或者登陆触发器。另外这个函数只能够放置在这两个函数的直接下方,而不能够放置在其引用的例程中,否则这个函数仍然会无效。这个是程序设计上的考虑。数据库管理员只需要牢记这个规则,不用其了解其背后的原因。 3、如果事务被回滚之后,这个EventData函数将会返回什么数据呢?如现在一个Update操作激发了一个触发器。但是在同一个事务中这个Update操作可能只是第一个动作。如果第一步操作成功,而第二步操作失败的话,则这个事务就会发生回滚,这主要是考虑到数据的一致性。回滚后,就相当于没有执行Upadate操作。但是这个触发器已经运行了。由于事务回滚的需要,如果触发器更改了其它数据的话,则可能还需要把这个触发器更改的数据重新更改回来。在这种情况下,这个EventDate函数会给数据库管理员什么信息呢?笔者在这里要非常不幸的告诉各位数据库管理员,据笔者了解,当事务被回滚后,而这个事务中激发的触发器又采用了EventData函数的话,那么此时这个函数所返回的数据是无效的,没有任何参考价值。 可见EventData函数虽然其功能强大,能够给数据库管理员提供触发器维护的一些必要信息。但是在使用这个函数的时候,还是需要有一定的技巧。数据库管理员需要了解这个函数返回的结果如果是重复的这并不是错误;同时需要知道该把这个函数放置在哪个位置才能够生效;以及事务回滚时对这个函数的影响等等。只有如此数据库管理员才能够更好的使用这个函数。

更多文章:
blast premier春季赛(csgo战队vitality有谁)
2026年9月7日 21:50
全球新冠肺炎疫情背景下航运发展(盐田港复苏日志:半年历劫从“低谷”到“爆仓” 疫情之后巨轮如何越洋航行)
2026年9月7日 17:10
matlab求解带字母参数方程组(我想matlab求一个关于x,y的方程组 ab c d f e h m n 都是参数)
2026年9月7日 16:30
oracle中的循环语句(下面哪个不是oracle程序设计中的循环语句 a for)
2026年9月7日 15:30
电脑里2个系统怎么删除一个(电脑开机显示有两个系统,如何删除一个)
2026年9月7日 12:20
scrollthrough意思(“scroll”是什么意思)
2026年9月7日 08:00






