不能,应为 Oracle 中的时间取的是系统时间,在正常的情况下是不会出现重复值的,但是如果有人修改了系统时间,那将带来不可想象的后果

解决方案 »

  1.   

    另外,你说的取更精确时间是可以的(在 Oracle 9i 中),但是不是 Date 的类型,而是“时间戳”的数据类型,具体的取法你可以参考一下新出的 9i 的手册
      

  2.   

    同意楼上的!
    前台程序控制比较不错
    以一个32位的GUID或者自己随机生成一个,也不错。
      

  3.   

    CREATE SEQUENCE GHNO INCREMENT BY 1 START WITH 1 
        MAXVALUE 1.0E28 MINVALUE 1 CYCLE 
        NOCACHE NOORDER;CREATE OR REPLACE TRIGGER YYGHNOADD
    BEFORE INSERT ON YYGHDJ
    FOR EACH ROW
    begin
    select  to_char(sysdate,'yyyymmdd') || lpad(ghno.nextval,4,'0') into :new.yyghno from dual;
    end;
    /
      

  4.   

    select sys_guid() from dual;
      

  5.   

    用时间戳-TimeStamp类型,可以精确到秒的小数位,可以用来作为表的行级锁
      

  6.   

    select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss.ff1') from dual;
    ...
    select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss.ff9') from dual;select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss.ff6') from dual=select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss.ssxff') from dual
      

  7.   

    SQL> select * from fnd_user a where a.user_id=1055;
    Execution Plan
    ----------------------------------------------------------
       0      SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=1 Bytes=219)
       1    0   TABLE ACCESS (BY INDEX ROWID) OF 'FND_USER' (Cost=1 Card=1
               Bytes=219)   2    1     INDEX (UNIQUE SCAN) OF 'FND_USER_U1' (UNIQUE)--BY INDEX ROWID