作者 主題: 請問oracle中欄位我想要自動取編號要如何做啊?  (閱讀 9631 次)

0 會員 與 1 訪客 正在閱讀本文。

pecoju

  • 可愛的小學生
  • *
  • 文章數: 4
    • 檢視個人資料
1.如題我想在oracle中建資料表,其中有一個欄位要像ACCESS能自動編號
2.還有一個日期欄位想自動設成預設值取系統日期時間,好像不能用=DATE()
   ,請問要如何用呢?
但是要怎麼做呢?請各位大大教教我吧~

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5384
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
1. 沒有這個功能. 如果允許跳號, 可以利用 sequence 這個物件. 如果不允許跳號, 可能要利用 lock 才能做到.
2. ORACLE 是使用 SYSDATE, 不是用 DATE. table 在建立的時候那個欄位要設定 default sysdate 就可以.

pecoju

  • 可愛的小學生
  • *
  • 文章數: 4
    • 檢視個人資料
請問 twu2大大:
     我知道要建立一個sequence ,但是我不知道要如何用在欄位上?所以還是不會
     還有日期的部份我在欄位那邊我把型態選DATE 在Default那一欄直接打sysdate 都沒有任何反應吔~
請問是直接打sysdate   嗎? 前面要加=sysdate 嗎?
請你勿必教教我啊,謝謝了

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5384
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
如下:
代碼: [選擇]

CREATE SEQUENCE T_SEQ INCREMENT BY 1
    START WITH 1
    MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE
    CACHE 20 NOORDER;

CREATE TABLE TT (F1 NUMBER(10) NOT NULL,
    F2 DATE DEFAULT SYSDATE NOT NULL);

insert into tt (F1) values (t_seq.nextval);
insert into tt (F1) values (t_seq.nextval);
insert into tt (F1) values (t_seq.nextval);
insert into tt (F1) values (t_seq.nextval);

SQL> select f1, to_char(f2, 'YYYY/MM/DD HH:MI:SS') from tt;

        F1 TO_CHAR(F2,'YYYY/MM/DDHH:MI:SS')
---------- --------------------------------------
         1 2002/09/09 09:57:23
         2 2002/09/09 09:57:35
         3 2002/09/09 09:57:35
         4 2002/09/09 09:57:36

pecoju

  • 可愛的小學生
  • *
  • 文章數: 4
    • 檢視個人資料
謝謝TWU2大大的幫忙
那我想再請問TWU2大大:
         因為我是ASP程式要去INSERT 資料進入資料庫
那是不是每次要INSERT 一筆資料都要給它t_seq.nextval
像 insert into tt (F1) values (t_seq.nextval); 這樣
那如果我先 select *  from TT
再用 addnew的可以嗎
像下面這樣
     set rs=server.createobject("ADODB.recordset")
     SQL="select * from tt"
     rs.open SQL,cn,2,2
   
     rs.addnew

      rs("f1")=t_seq.nextval

     rs.update
麻煩大家囉

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5384
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
asp 不熟, 不知道怎麼用. 如果最後出來的是我寫出的那個 sql 指令就可以.

猜測你那個寫法應該是不行.