假设我有一张表a,我插入一条数据的时候,如何在插入后返回插入的数据的第一列的值,不要说查最大值,最大值的话多用户就麻烦了

解决方案 »

  1.   


    create table t(
           col_1 varchar2(5 char),
           col_2 varchar2(5 char))
    /
    create table tt(
           t_col varchar2(5 char))
    /
    SQL> create or replace trigger tri_select
      2  after insert on t
      3  for each row
      4  begin
      5      insert into tt(t_col)
      6      values(:new.col_1);
      7  end tri_select;
      8  /
     
    Trigger created
     
    SQL> insert into t values('aaa','000');
     
    1 row inserted
     
    SQL> select * from t;
     
    COL_1      COL_2
    ---------- ----------
    aaa        000
     
    SQL> select * from tt;
     
    T_COL
    ----------
    aaa
     
    SQL> insert into t values('CSDN','0001');
     
    1 row inserted
     
    SQL> select * from tt;
     
    T_COL
    ----------
    aaa
    CSDN
     
    SQL> 
      

  2.   

    对了,我突然想到一个问题,这个是插入数据时就触发,那么,如果要定义插入的值来触发呢?比如,插入数据‘wxl’时触发,怎么写呢?
    初学者,不要笑我哈 ,呵呵O(∩_∩)O~
      

  3.   


    after insert on t 这里怎么添?  col_1='wxl'
      

  4.   

    借花献佛--插入前
    create or replace trigger tri_select
    before insert on t--插入后
    create or replace trigger tri_select
    after insert on t
      

  5.   

    不需要触发器,直接DML语句就可以返回比如表为a 第一列字段为col1
    insert into a values (...) returning col1 into strcol1;--strcol1 自己定义下
      

  6.   

    你这个只能写在pl/sql里面。
    sql基本语法 里好像没有这个的。