楼主: lyzhanhun

[精华] 从实际出发--一个触发器问题的解决

[复制链接]
论坛徽章:
1
优秀写手
日期:2013-12-18 09:29:09
11#
 楼主| 发表于 2013-9-29 12:47 | 只看该作者
myth8860 发表于 2013-9-24 16:58
delete from aa where current of c;

这个也触发了这个表啊,估计是系统判定不会引起循环触发。

七公 标题名又改了下
原来的应用搭建在SQLServer上 利用了DELETED表之类的功能
这触发器说来算是个无奈之举 后面服务器应该也会支持类似功能

使用道具 举报

回复
论坛徽章:
43
现任管理团队成员
日期:2011-05-07 01:45:08ITPUB元老
日期:2012-09-12 14:50:28版主5段
日期:2014-06-11 02:21:31阿斯顿马丁
日期:2013-11-19 10:38:16祖母绿
日期:2012-11-06 12:43:12路虎
日期:2013-11-20 11:37:53雪佛兰
日期:2013-09-05 13:28:25ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24秀才
日期:2015-05-26 13:32:07
12#
发表于 2013-9-29 13:10 | 只看该作者
lyzhanhun 发表于 2013-9-29 12:47
七公 标题名又改了下
原来的应用搭建在SQLServer上 利用了DELETED表之类的功能
这触发器说来算是个无奈 ...

好的,SQLServer确实可以通过DELETED表来解决这个问题。

使用道具 举报

回复
论坛徽章:
7
迷宫蛋
日期:2011-10-28 12:46:492012新春纪念徽章
日期:2012-01-04 11:50:442014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11暖羊羊
日期:2015-03-04 14:50:372015年新春福章
日期:2015-03-06 11:57:31喜羊羊
日期:2015-03-16 11:00:26
13#
发表于 2013-9-29 16:19 | 只看该作者
本帖最后由 fffqqqyyy 于 2013-9-29 16:23 编辑



D:\dmdbms7\bin>disql.exe
disql V7.1.2.162-Build(2013.09.03-33930trunc)
用户名:
密码:

服务器[LOCALHOST:5236]:处于普通打开状态
使用普通用户登录

登录使用时间: 21.143(毫秒)
SQL>
SQL>create table aa (id int, ID1 VARCHAR);
操作已执行
已用时间: 6.084(毫秒). 执行号:684.
SQL>insert into aa values(1, 'aa');
影响行数 1

已用时间: 1.669(毫秒). 执行号:685.
SQL> insert into aa values(2, 'aab');
影响行数 1

已用时间: 0.991(毫秒). 执行号:686.
SQL> insert into aa values(3, 'aabcc');
影响行数 1

已用时间: 1.137(毫秒). 执行号:687.
SQL> insert into aa values(4, 'aabdd');
影响行数 1

已用时间: 0.995(毫秒). 执行号:688.
SQL> insert into aa values(5, 'aabddcc');
影响行数 1

已用时间: 1.001(毫秒). 执行号:689.
SQL> insert into aa values(6, 'xxbddcc');
影响行数 1

已用时间: 1.195(毫秒). 执行号:690.
SQL>CREATE OR REPLACE  TRIGGER TGaa
2    after DELETE ON aa
3    FOR EACH row
4     when (ld.id1 like 'aa%')
5    declare
6    c  cursor is select id1 from aa where id1 like ld.id1 + '%' for update;
7    k varchar(200);
8    begin
9    print ld.id1;
10   open c;
11    loop
12      fetch c into k;
13      if c%notfound then
14                 exit;
15      end if;
16
17      delete from aa where current of c;
18    end loop;
19   end;
20  /
操作已执行
已用时间: 7.231(毫秒). 执行号:691.
SQL>select * from aa;

行号       ID          ID1
---------- ----------- -------
1          1           aa
2          2           aab
3          3           aabcc
4          4           aabdd
5          5           aabddcc
6          6           xxbddcc

6 rows got

已用时间: 2.235(毫秒). 执行号:692.
SQL>commit;
操作已执行
已用时间: 0.592(毫秒). 执行号:693.
SQL> delete from aa where id = 1;
影响行数 1

已用时间: 11.981(毫秒). 执行号:694.
SQL>commit;
操作已执行
已用时间: 1.058(毫秒). 执行号:695.
SQL>select * from aa;

行号       ID          ID1
---------- ----------- -------
1          6           xxbddcc

已用时间: 0.570(毫秒). 执行号:696.
SQL>

使用道具 举报

回复
论坛徽章:
1
日产
日期:2013-10-14 15:32:12
14#
发表于 2013-10-4 19:36 | 只看该作者
关注~

使用道具 举报

回复
论坛徽章:
0
15#
发表于 2013-11-2 11:11 | 只看该作者

顶一下

使用道具 举报

回复
论坛徽章:
43
现任管理团队成员
日期:2011-05-07 01:45:08ITPUB元老
日期:2012-09-12 14:50:28版主5段
日期:2014-06-11 02:21:31阿斯顿马丁
日期:2013-11-19 10:38:16祖母绿
日期:2012-11-06 12:43:12路虎
日期:2013-11-20 11:37:53雪佛兰
日期:2013-09-05 13:28:25ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24秀才
日期:2015-05-26 13:32:07
16#
发表于 2013-11-4 22:25 | 只看该作者
route1997 发表于 2013-11-2 11:11
顶一下

欢迎常来。

使用道具 举报

回复
论坛徽章:
19
ITPUB十周年纪念徽章
日期:2011-11-01 16:26:292015年新春福章
日期:2015-03-04 14:53:16优秀写手
日期:2014-03-19 06:00:24马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:08比亚迪
日期:2013-10-23 21:35:02ITPUB社区12周年站庆徽章
日期:2013-10-08 14:54:39茶鸡蛋
日期:2013-07-25 19:48:40灰彻蛋
日期:2013-05-24 09:42:412013年新春福章
日期:2013-02-25 14:51:24
17#
发表于 2014-1-22 16:58 | 只看该作者

提供一个方案供参考。
在该表上创建视图,然后在该视图上创建一个 instead of类型的trigger。

使用道具 举报

回复
论坛徽章:
2
2014年新春福章
日期:2014-02-18 16:50:09马上有车
日期:2014-02-18 16:50:09
18#
发表于 2014-2-14 10:37 | 只看该作者
还以为是oracle。。

使用道具 举报

回复
论坛徽章:
0
19#
发表于 2014-2-17 13:23 | 只看该作者
学习了

使用道具 举报

回复
论坛徽章:
9
ITPUB9周年纪念徽章
日期:2010-10-08 09:32:27ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15蜘蛛蛋
日期:2012-02-29 15:56:41雪佛兰
日期:2013-09-18 11:35:10ITPUB社区12周年站庆徽章
日期:2013-10-08 14:53:15ITPUB社区12周年站庆徽章
日期:2013-10-08 14:57:28ITPUB社区12周年站庆徽章
日期:2013-10-08 14:59:19问答徽章
日期:2014-02-25 16:50:06优秀写手
日期:2014-03-22 06:00:12
20#
发表于 2014-2-17 16:07 | 只看该作者
我也以为是oracle 呢...

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表