请问,如果有一个要求是表中一个列的主键是6个数字的整型。要求输入的时候要有触发器的控制,控制输入应该是连续的和唯一的。
这个触发器的触发事件是不是BEFORE INSERT呀?我可以限制内容么?触发器里写,找到主键上最大的一个数字,然后+1,并且其它的列的内容从用户输入得到。然后插入?
可以吗?谢了,刚接触触发器,不太明白,希望大家帮忙~~

解决方案 »

  1.   

    用oracle的序列,这样,才能真正的并发,用trigger里的max语句产生序列号在并发的情况下有可能会产生重复的序列号的
      

  2.   

    9iSQL> create sequence seq_test start with 100000 maxvalue 999999;Sequence created.9iSQL> select seq_test.nextval from dual;   NEXTVAL
    ----------
        1000009iSQL> select seq_test.nextval from dual;   NEXTVAL
    ----------
        100001
      

  3.   

    嗯,我的确也有想过用序列。
    但具体加入到trigger里,是怎样?CREATE OR REPLACE TRIGGER bi_control_cno
      BEFORE INSERT ON Client
      BEGIN
        INSERT INTO Client (cilentNo, fName, IName, telNo, prefType, maxRent, staffNo) VALUES (sequence.nextval, :NEW.fName, :NEW.IName, :NEW.telNo, :NEW.prefType, :NEW.maxRent, :NEW.staffNo);
    END;
    /这样写对吗?呵呵