| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1296 人关注过本帖
标题:在线求助触发器
只看楼主 加入收藏
wangquanlCS
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-11-12
收藏
 问题点数:0 回复次数:3 
在线求助触发器
比如说我有一个表A:
列1       列2   
username  age

当我在A里插入数据之后,跟踪表B
列1       列2    列3         列4          列5        列6
username  age   createtime  updatetime  deletetime  sate

记录了相同数据,并且使createtime字段的值为当前系统的时间,字段SATE的值为I.

更新删除的操作跟上无异,只是SATE的值分别为U和D
这里要注意,A表中被删除的数据,在B表中不被删除.

在线请求各为大虾相助,不胜感激~~~~
搜索更多相关主题的帖子: 触发器 在线 
2008-11-27 12:55
wangquanlCS
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-11-12
收藏
得分:0 
靠,自己搞出来了
create or replace trigger inupdetable
  before update or delete or insert on table_a
  for each row
declare
  c number;
begin
--判断数据库内是否有数据
  select count(*) into c from table_b where id = :new.id;

--没有数据的操作
  if c = 0 then
       --插入
    if inserting then
      insert into table_b(id,username,age,createtime,sate)
      values
        (:new.id,
         :new.username,
         :new.age,
         sysdate,
         'I');
        
      --更新
    elsif updating then
      insert into table_b(id,username,age,updatetime,sate)
      values
        (:new.id,
         :new.username,
         :new.age,
         sysdate,
         'U');
        
       --删除
    elsif deleting then
      update table_b
         set username        = :old.username,
             age             = :old.age,
             deletetime      = sysdate,
             sate             = 'D'            
       where id              = :old.id;
    end if;
    
  --有数据的操作
  else
        --插入
    if inserting then
      update table_b
         set username        = :new.username,
             age             = :new.age,
             createtime      = sysdate,
             sate            = 'I'            
       where id              = :new.id;
       
       --删除
    elsif deleting then
      update table_b
         set username        = :old.username,
             age             = :old.age,
             deletetime      = sysdate,
             sate            = 'D'            
       where id               = :new.id;
       
       --更新
    elsif updating then
      update table_b
         set username        = :new.username,
             age              = :new.age,
             updatetime      = sysdate,
             sate            = 'U'
       where id              = :new.id;
       
    end if;
  end if;
end;
2008-11-28 20:57
wzla333
Rank: 4
来 自:火星
等 级:业余侠客
威 望:2
帖 子:185
专家分:237
注 册:2006-8-24
收藏
得分:0 
又见只求的帖子。。。。

我从来都非常缺少朋友,因为自己不善于表达,无论是工作,学习,生活,抑或是网络...ACG爱好者,标准一个无限接近30岁的大叔......
2008-11-30 01:16
快速回复:在线求助触发器
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016142 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved