oracle建立表索引自增,oracle怎麼實現id自增和設定主鍵啊

2023-01-17 07:10:45 字數 4485 閱讀 8606

1樓:

oracle 不想其他的資料庫,本身沒有自增的,你可以通過序列和觸發器的形式實現

oracle怎麼實現id自增和設定主鍵啊

2樓:十一月甜

可以使用序列實現id自增,主鍵的語法為primary key。

當一個序列第一次被查詢呼叫時,它將返回一個預定值。在隨後的每次查詢中,序列將產生一個按指定的增量增長的值。序列可以迴圈,或者是連續增加的,直到指定的最大值為止。

建立序列語法如下:create sequence [模式]序列名稱[start with 起始數字] [increment by 增量][maxvalue 最大值|nomaxvalue][minvalue 最小值|nominva lue][cycle|nocuyle][cache 數目|nocache][order|noorder]。

具體**示例如下:

建立表create table book(

bookid varchar2(4) primary key,

name varchar2(20)

建立序列

create sequence book_seq start with 1 increment by 1;

建立觸發器

create or replace trigger book_trigger

before insert on book

for each row

begin

select book_seq.nextval into :new.bookid from dual;

end ;

新增資料

insert into book(name)  values ('cc');

insert into book(name)  values ('dd');

commit;

3樓:匿名使用者

呵呵,這個問題,是從其他資料庫轉過來的開發者最常見的問題。

1、關於主鍵:在建表時指定primary key字句即可:

create table test(

id number(6) primary key,

name varchar2(30)

);如果是對於已經建好的表,想增加主鍵約束,則類似語法:

alter table test add constraint pk_id primary key(id);

其中add constraint 和 primary key是關鍵字,pk_id是主鍵名稱,自定義的額,只要不重複即可。

2、關於id自增功能,也很簡單,而且比較靈活。

(1)首先建立一個序列(就是每次查詢會自動增加值的絕不重複的物件,比如每次加1或每次加10)。語法:

create sequence 序列名

[increment by n] --每次加幾

[start with n] --序列從幾開始

--最小值、最大值的限制

比如create sequence s_test start with 1 increment by 1; --就是建立了額一個從1開始每次加1的序列。

訪問序列時,用 序列名稱.nextval的語法。

比如對於上表,如果想要id欄位實現自增。則在每次插入記錄時,使用下面類似的語法(前提是表和序列已經建好)。

insert into test values (s_test.nextval,'張三');

當然,你也可以自動一些,對錶的插入操作,建立一個觸發器,每當有資料插入時,觸發器自動修改id值為序列的新值,這樣就完全實現自增id功能了。不過其實也沒有這個必要。因為觸發器如果建多了,有時會比較混亂,不易管理。

辛苦手碼了這麼多字,如果能幫到你,請及時採納最佳。

oracle建表id自動增長

4樓:紅草

可以使用oracle的sequence實現自增長。

oracle資料庫中怎樣給表建立自動增長列???

5樓:匿名使用者

1、在oracle中沒有想sqlserver自動增長列,如果想要達到這個效果必須要自己建立索引

2、建立索性,可以為你這個需要自動增長的表建立觸發器,觸發器自動幫你完成自動增長工作

3、第二種方法:建立索性,插入的時候自動獲取索引的下一個值

6樓:匿名使用者

沒看見採納啊,暈了,這樣麻煩的話,用oracle自帶的吧,

create sequence seq;

create table person(id number(3),name varchar2(10));

insert into person values (seq.nextval,「測試1」);

insert into person values (seq.nextval,「測試2」);

insert into person values (seq.nextval,「測試3」);

select * from person;

id:結果 1 2 3

7樓:匿名使用者

create sequence 序列的名字。 這樣就可以了 用這種自動增長的 還有什麼不懂,可以問問

oracle資料庫建立自動增長的表空間語句怎麼寫?

oracle 建表並設定 主鍵 自增

8樓:匿名使用者

可以建立主鍵,但是不可以自增,需要通過程式實現或觸發器實現。

create table t (

a number(14) not null,b varchar2(11) not null,c varchar2(20) not null,d varchar2(60),

e varchar2(20) not null,f varchar2(50) not null,constraint pk$t primary key (a) -- 主鍵 pk$t 是主鍵名);

oracle建立表中怎麼實現自增長

9樓:匿名使用者

先建一個equence

create sequence dept_seqminvalue 1

maxvalue 1000

start with 1

increment by 1

再建一個觸發器

當向表裡插入資料時候

編號可以自動增加

10樓:匿名使用者

在系號departmentid欄位上建立序列

11樓:匿名使用者

create table department(departmentid int primary key auto increment,deptname varchar2(20) not null);

12樓:莆田老斯基

建一個sequence,然後在插入資料的時候用.nextval就可以了

13樓:匿名使用者

建立一個序列。並且這個序列要設定好,否則,這個號碼不一定按遞增;

14樓:都來跪拜大多特

oracle沒有自增列,用sequence +觸發器

15樓:匿名使用者

sequence或者觸發器

16樓:匿名使用者

建立一個序列,然後通過觸發器使:new.departmentid:=序列.nextval

oracle建表語句,id是自動增長,要完整的建表語句 5

17樓:匿名使用者

oracle的id自動增長一般是通過序列實現的,跟建表的語句沒有關係的!

18樓:匿名使用者

create sequence add_empincrement by 1 -- 每次遞增1start with 1 -- 從1開始nomaxvalue -- 沒有最大值minvalue 1 -- 最小值=1nocycle; -- 不迴圈

19樓:匿名使用者

一樓的回答很正確,oracle沒有所謂的自增長,你可以用tigger或序列來實列,或者可以用uuid,

sql建立**語句主鍵自動增加

20樓:放飛新的人生

如果是mysql,可以使用auto_increment關鍵字,表示自增長。

比如:create table test

(id   int(20) not null auto_increment,

primary key (id)

);如果是oracle,可以使用序列。

為什麼是全表掃描,索引沒起作用,Oracle 11g遞迴子句

不知道你建立的是b樹索引還是點陣圖索引,照你所說的person表應該建立關於deptid的點陣圖索引,因為單位的數量不會很多吧。oracle會自動在需要檢索需要超過一定比例的行後進行全表掃描,而不是使用索引。更新 確實我的是錯的了。樓下說的多重迴圈才對,1k多 2萬 一千多萬次了。看語句能不能改改了...

Oracle怎樣建立關係表與其他的表關聯

設定外來鍵唄 如果用jdeveloper開發的話 直接在介面就能用箭頭來關聯就可以了 eo 實體 vo 檢視 介面 3個組合起來就行了 需要你設定主外來鍵的,那樣就可以關聯了 主鍵關鍵字是primary key 外來鍵的關鍵字是 foreign key 例如下面這兩個表中分別存的時員工的基本資訊和公...

oracle中如何用命令建立表空間

oracle建立表空間有多種方法 如下 方法1 建立,如下 sql edi 已寫入 file afiedt.buf 1 create tablespace ts1 2 datafile f oracle product 10.2.0 oradata orcl ts1.dbf size 100m 3 ...