CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他数据库开发 >  SQL Anywhere Studio

如何使用另一个用户的数据表,但不触发触发器?

楼主teng(blackeyes)2002-04-20 10:04:06 在 其他数据库开发 / SQL Anywhere Studio 提问

如何使用另一个用户的数据表,但不触发触发器? 问题点数:20、回复次数:12Top

1 楼jlandzpa(jlandzpa)回复于 2002-04-20 10:16:09 得分 0

首先要看看触发器是如何写的,再想办法避免!Top

2 楼bzszp(SongZip)回复于 2002-04-20 10:38:45 得分 0

只要给这个用户赋操作另一个用户的数据表的权限就行了Top

3 楼teng(blackeyes)回复于 2002-04-20 10:50:40 得分 0

表和触发器不是在一起的吗?如何让别的用户还可用触发器,而本用户不用?Top

4 楼swjtu95(老狼)回复于 2002-04-20 10:52:29 得分 0

触发器   一触即发。  
  可能要修改触发器的条件来判断是新用户时不做任何动作。Top

5 楼bzszp(SongZip)回复于 2002-04-20 10:56:25 得分 0

sorry,刚才看错题目了,  
  楼上的方法就可以,在触发器里判断操作的用户,但我不知道怎么判断用户Top

6 楼teng(blackeyes)回复于 2002-04-20 11:12:27 得分 0

多谢各位!!Top

7 楼lthsj(晚枫)回复于 2002-04-20 23:19:31 得分 0

我想要看你做什么操作了  
  触发器有几种触发方式。如UPDATE,INSERT等。你对表进行数据改动了必然触发它  
  怎么在触发器里加判断用户我还没见过,如果作到了请告诉我Top

8 楼KingSunSha(弱水三千)回复于 2002-04-20 23:43:05 得分 0

查当前用户是不难的,用select   user   into   cur_user   from   dual;就可以了  
  如果能hard   code当前表的owner的话,这个要求一点都不难Top

9 楼teng(blackeyes)回复于 2002-04-21 09:01:00 得分 0

如果触发器原来这样写:  
  CREATE   OR   REPLACE   TRIGGER   "MM"."DELTOPO"   AFTER   DELETE    
          ON   "TOPO"    
          FOR   EACH   ROW   begin  
        delete   from   TopoBuJian   where   TopoBuJian.FieldTypeID=:old.FieldTypeID;  
        delete   from   TopoPort   where   TopoPort.FieldTypeID=:old.FieldTypeID;  
        delete   from   TopoLine   where   TopoLine.FieldTypeID=:old.FieldTypeID;  
        delete   from   TopoEQuery   where   TopoEQuery.FieldTypeID=:old.FieldTypeID;  
        delete   from   TopoPreDeal   where   TopoPreDeal.FieldTypeID=:old.FieldTypeI;  
  end;  
  现在用yy用户访问,不触发他,怎么改?Top

10 楼KingSunSha(弱水三千)回复于 2002-04-21 14:50:11 得分 20

CREATE   OR   REPLACE   TRIGGER   "MM"."DELTOPO"   AFTER   DELETE    
          ON   "TOPO"    
          FOR   EACH   ROW  
  declare  
        cur_user   varchar2(30);  
  begin  
        select   user   into   cur_user   from   dual;  
        if   cur_user   =   'MM'   then  
              delete   from   TopoBuJian  
                where   TopoBuJian.FieldTypeID=:old.FieldTypeID;  
              delete   from   TopoPort  
                where   TopoPort.FieldTypeID=:old.FieldTypeID;  
              delete   from   TopoLine  
                where   TopoLine.FieldTypeID=:old.FieldTypeID;  
              delete   from   TopoEQuery  
                where   TopoEQuery.FieldTypeID=:old.FieldTypeID;  
              delete   from   TopoPreDeal  
                where   TopoPreDeal.FieldTypeID=:old.FieldTypeI;  
        end   if;  
  end;  
  Top

11 楼teng(blackeyes)回复于 2002-04-21 19:32:58 得分 0

多谢弱水,给你分了。Top

12 楼teng(blackeyes)回复于 2002-04-21 19:39:12 得分 0

我还找到一个办法,不知行不行?  
  CREATE   OR   REPLACE   TRIGGER   "MM"."DELTOPO"   AFTER   DELETE    
          ON   "TOPO"    
          FOR   EACH   ROW   WHEN   USER='MM'   begin  
        delete   from   TopoBuJian   where   TopoBuJian.FieldTypeID=:old.FieldTypeID;  
        delete   from   TopoPort   where   TopoPort.FieldTypeID=:old.FieldTypeID;  
        delete   from   TopoLine   where   TopoLine.FieldTypeID=:old.FieldTypeID;  
        delete   from   TopoEQuery   where   TopoEQuery.FieldTypeID=:old.FieldTypeID;  
        delete   from   TopoPreDeal   where   TopoPreDeal.FieldTypeID=:old.FieldTypeI;  
  end;  
  Top

相关问题

  • 请问怎样用触发器限定数据表的大小
  • 触发器?!
  • 触发器
  • 触发器
  • 求触发器
  • 触发器
  • 触发器(ORACLE)!!!!!!!!!
  • 触发器(ORACLE)!!!!!!!!!
  • oracle 触发器??
  • 触发器!

关键词

  • 用户
  • fieldtypeid
  • 触发器
  • topoline
  • topobujian
  • topoequery
  • topopredeal
  • topoport
  • 触发
  • 数据表

得分解答快速导航

  • 帖主:teng
  • KingSunSha

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo