我现在想做个触发器:监听visitor_table是否有添加,如果有添加,则将添加的所有字段返回WinForm用于提示特定用户操作
create or replace trigger tr_visitor_insert
  after insert on vm_visitor_table  
  for each row
declare
  insert_visitor -- 什么类型?
begin
  insert_visitor=select * from inserted --不知道具体怎么写了
end tr_visitor_insert;
我用的是oracle数据库
还有就是到Winform这边来怎么编程处理,在赶毕设,谢谢了

解决方案 »

  1.   

    呵呵,谢谢了
    create or replace trigger tr_visitor_insert
      after insert on vm_visitor_table  
      for each row
    declare
      @insert_visitor_id number,@insert_visitor_name varchar2(20),@insert_visitor_reason varchar2(20) begin
      @insert_visitor_id=visitor_id,@insert_visitor_name=visitor_name,@insert_visitor_reason=visitor_reason from inserted
    end tr_visitor_insert;
    这是我刚瞎想的,触发器oracle是用‘@’还是‘:’??还有就是SqlTriggerContext这个类适合oracel数据库吗
      

  2.   

    楼主要是去掉“向goody9807提问”就好了,怎么看那标题都像是看不起别人。别以为CSDN里高分的人就一定厉害,真正高手可没那么多闲工夫在这里刷分——注意,说白了分都是刷出来的,正常情况下怎么可能会那么高。Oracle的变量既不要“@”也不要“:”,或者说加了就都是错误的,别的不想说了,会——但是不想说,还请goody9807来说。
      

  3.   

    建议去oracle这个是sql的
    create trigger tr_Value on vm_visitor_table
    for insert
    as
    begin
      select * from inserted--当vm_visitor_table这个有东西插入到这个表的时候,把插入的值返回
    end
      

  4.   

    呵呵,刚在网上溜达了会,发现好多人还是推荐:触发器+存储过程+utl_tcp包,通过utl_tcp包向应用程序推数据,
    数据库不熟,方法概要想好了,不知道怎么实现
      

  5.   


    正好没人看到罢了,自己要多顶几下。首先创建一张表,包含所有你要返回的字段,假定该表表名为TMP001,触发器创建参考如下语句:create or replace trigger tr_visitor_insert
    after insert on vm_visitor_table
    for each row
    begin
       insert into TMP001(column1,column2,column3)
       values(:new.column1,:new.column2,:new.column3)
    end tr_visitor_insert;
    然后WinForm里定时查询该TMP001表,发现有数据,显示出来并将显示过的数据从TMP001表中删除即可。
      

  6.   

    那个什么,“values(:new.column1,:new.column2,:new.column3)”后面漏了个封号,你自己记得补上。就这么简单的一个思路,你似乎想歪了。这样就应该可以满足要求了,如果有什么看不懂的地方再提出来。
      

  7.   

    谢谢qldsrx,不过还是有问题
    create or replace trigger tr_visitor_insert
    after insert on vm_visitor_table
    --referencing   new as new_value
    for each row
    begin
       insert into VM_INSERTED(VISITED_ID)
       values(:NEW.VISITED_ID);end tr_visitor_insert;
    Compilation errors for TRIGGER WANGYULONG.TR_VISITOR_INSERTError: PLS-00049: bad bind variable 'NEW.VISITED_ID'
    Line: 7
    Text: values(:NEW.VISITED_ID);
    另外,隐约感觉到使用定时器还是客户端主动的取数据,起不到数据库主动“推”的效果,另外使用定时器感觉有点浪费资源
      

  8.   

    qldsrx的方法可以实现所需要的效果,但是没有真正实现触发器的作用,只是在客户端定时“取”数据库更新