LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 807|回复: 7

postgresql中的rule问题

[复制链接]
发表于 2005-4-6 20:50:52 | 显示全部楼层 |阅读模式
我想实现下面的rule:
delete from a where id=1
同时也:
delete from b where id=1

也就是说,执行对a表的删除,同时也能执行对b表中的对应行进行删除操作。可是实现吗?应该怎么写呢?

我写的下面:
create rule del_user as on delete to a do instead delete from b where b.id=a.id;

结果确实,删除a表中的一行转变成删除b表中的对应行,而a中的数据保留。我想两个一起删除。不知道该怎么写。请高人指教。
发表于 2005-4-6 22:13:56 | 显示全部楼层
create rule del_user as on delete to a do instead delete from b where b.id=a.id;


写一个函数(使用pl/pgsql), 定义一个函数。
然后
create rule del_user as on delte to a do instead 函数名1(a.id);

我是这样来想思路的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-7 07:15:05 | 显示全部楼层
那再问一个相关的问题,就是:我要达到的目的,是放在数据库中实现比较好呢?还是在程序中实现比较好?
回复 支持 反对

使用道具 举报

发表于 2005-4-7 10:43:37 | 显示全部楼层
建立一个触发器应该也可以实现楼主的要求吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-7 11:31:30 | 显示全部楼层
Post by 醉卧美人膝
建立一个触发器应该也可以实现楼主的要求吧

触发器不是也要用函数来实现吗?

还想问一下我前面问过的问题:我要达到的目的,是放在数据库中实现比较好呢?还是在程序中实现比较好?

多谢!
回复 支持 反对

使用道具 举报

发表于 2005-4-9 22:50:06 | 显示全部楼层
在数据库中实现比较好。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-9 23:14:15 | 显示全部楼层
Post by 黄叶
在数据库中实现比较好。

如果在数据库中实现,那么如果移植数据库怎么办?比如pgsql到mysql,那不是完蛋了?
回复 支持 反对

使用道具 举报

发表于 2005-4-10 13:58:00 | 显示全部楼层
在程序中用一个事务完成可能比较好吧?!
回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表