dadamoney

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2007年3月29日

摘要: 我的系统数据量很大,为了提高性能,我的很多功能都是用触发器实现的,而不是外部程序。 所以数据库里面有很多触发器,有一些是嵌套触发的,形成一个链条。 但链条中的某一个触发器执行出错时,所有的触发器都回滚了,这是我不想看到的。 如何做到不让触发器回滚? 1、触发器是怎样控制事务的? 2、可否做到出错时不让触发器回滚? 3、即使回滚了,能不... 阅读全文
posted @ 2007-03-29 10:49 dadamoney 阅读(709) 评论(0) 推荐(0) 编辑

摘要: 在一个transaction内,会提交主表A与子表B。应用程序的代码应该是先向A表insert,再向B表insert(我用事件探测器观察到的,因为应用程序是别人开发的,我手头上没代码)。 现在我打算在A表加一触发器,用来把B表的一些字段的汇总数填写到A表中,此时,A表的触发器当然可以访问在A表的新增数据,但是否可以访问B表的新增数据(在B表的inserted区)呢? ... 阅读全文
posted @ 2007-03-29 09:50 dadamoney 阅读(758) 评论(1) 推荐(0) 编辑

摘要: 执行Begin Trans后,Commit Trans 和 Rollback Trans 都是终止事务的执行的。 那具体有什么区别啊?? 1. 成功提交時用Commit Trans 如果錯誤﹐就是操作不成功﹐如insert into,update,delete失敗﹐那么用Rollback Trans 回滾﹐回到原來的狀態﹐數據保持不... 阅读全文
posted @ 2007-03-29 09:44 dadamoney 阅读(870) 评论(0) 推荐(0) 编辑

摘要: 1.可以的﹐但一個表帶兩個觸器不好﹐對查詢速度﹐性能都有影響2.每个表的触发器个数仅受数据库中的对象个数限制,数据库对象包括所有的表、视图、存储过程、扩展存储过程、触发器、规则、默认值及约束。一个数据库中所有对象的总数不得超过 2,147,483,647。 阅读全文
posted @ 2007-03-29 09:39 dadamoney 阅读(1107) 评论(1) 推荐(0) 编辑

摘要: 我在表A的触发器中向表B插入的记录在表B中有一个标识列字段(newid()),生成这一行后在表A的触发器中要取到这个标识列字段,请问这个字段的值能够取到么?谢谢!seelct @@identity 或select scope_identity() 在有INSTEAD OF 和 AFTER的UPDATE触发器时候可以让AFTER 触发器先执行吗? 不能,否则就乱套了 阅读全文
posted @ 2007-03-29 09:34 dadamoney 阅读(326) 评论(0) 推荐(0) 编辑

摘要: 触发器使用 可以定义一个无论何时用INSERT语句向表中插入数据时都会执行的触发器。 当触发INSERT触发器时,新的数据行就会被插入到触发器表和inserted表中。inserted表是一个逻辑表,它包含了已经插入的数据行的一个副本。inserted表包含了INSERT语句中已记录的插入动作。inserted表还允许引用由初始化INSERT语句而产生的日志数据。触发器通过检查... 阅读全文
posted @ 2007-03-29 09:30 dadamoney 阅读(5075) 评论(0) 推荐(0) 编辑

摘要: 对一个表A更新时,能否暂时使表的触发器失效? 如果不行,是否有办法编一个过程B自动将表A的所有触发器保存下来,然后删掉触发器,更新完毕后再从新将触发器添加上去?我的意思是我只需要传表名给过程B,然后过程B就完成这项工作? 禁用: alter table 表名 disable trigger 触发器名 启用: alter table 表名 enable... 阅读全文
posted @ 2007-03-29 09:25 dadamoney 阅读(1950) 评论(0) 推荐(0) 编辑

摘要: RT:请求跟踪器介于JitterBug和Bugzilla之间,而且它的设计是为了实现子定义拓展。它被后来的个人工具所模仿,所以它给人一种似曾相识的外观和感觉。Jesse Vincent于1996年用perl编写了RT,是当前沿用下来的最实用的产品。你可以从RT自己的网站上免费下载RT。团队开发这种免费工具能够提供购买。 RT对Bug-tracking工具提供了在线支持,Web和... 阅读全文
posted @ 2007-03-29 09:21 dadamoney 阅读(432) 评论(0) 推荐(0) 编辑

摘要: CREATE TRIGGER [Update_ChildWareID] ON [dbo].[t_goodlctn_std] FOR UPDATE AS declare @Lctn_Order int declare @OldWareID int declare @NewWareID int decl... 阅读全文
posted @ 2007-03-29 09:19 dadamoney 阅读(582) 评论(0) 推荐(0) 编辑

摘要: USE master go create database DEPTLISTS ON (NAME=DEPTLISTS_DAT, FILENAME='F:\My Files\vb\P237\DEPTLISTS_DAT.MDF') LOG ON (NAME=DEPTLISTS_LOG, FILENAME='F:... 阅读全文
posted @ 2007-03-29 09:14 dadamoney 阅读(682) 评论(0) 推荐(0) 编辑

摘要: 递归触发器就是一个表(table1)的操作影响了另外一个表(table2) 而table2的变动又反过来影响了table1,就这样一直循环直到不满足条件时退出。 递归触发器允许发生两种类型的递归: 1、间接递归 2、直接递归 使用间接递归时,应用程序更新表 T1,从而激发触发器 TR1,该触发器更新表 T2。在这种情况下,触发器 T2 将激发并更... 阅读全文
posted @ 2007-03-29 09:10 dadamoney 阅读(383) 评论(0) 推荐(0) 编辑

摘要: 如何查看触发器(企业管理器) 查看触发器 展开服务器组,然后展开服务器。 展开"数据库"文件夹,展开含触发器的表所属的数据库,然后单击"表"文件夹。 在详细信息窗格中,右击触发器所在的表,指向"所有任务"菜单,然后单击"管理触发器"命令。 请参见 查看触发器 SELECT *... 阅读全文
posted @ 2007-03-29 09:04 dadamoney 阅读(1751) 评论(0) 推荐(0) 编辑

摘要: 虽然视图通常不能动态修改,但是,使用 INSTEAD OF 触发器您可以指定操作,保持视图最新,同时修改视图基础基表中的数据。例如,您可在视图上定义 INSTEAD OF INSERT 触发器,以替换标准的 INSERT 语句。 假定在 pubs 数据库中以下面的视图开始: CREATE VIEW AuthorsNames AS SELECT au_id, au_fname, au_lname F... 阅读全文
posted @ 2007-03-29 09:00 dadamoney 阅读(497) 评论(0) 推荐(0) 编辑

摘要: 对于 Microsoft® SQL Server™ 数据库,可以在 Transact-SQL 中编写触发器,而对于 Oracle 数据库,则可以在 PL/SQL 中进行编写。通过指定下列内容创建触发器: 当前表或视图(对于 INSTEAD OF 触发器)。 激活该触发器的数据修改事务:添加新数据 (INSERT)、更新现有数据 (UPDATE) 或删除现有数据 (DELETE)。... 阅读全文
posted @ 2007-03-29 08:57 dadamoney 阅读(516) 评论(0) 推荐(0) 编辑