Oracle 給表添加主鍵和使ID自增、觸發器、創建結構一樣的表


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] --序列從幾開始
[{MAXVALUE/ MINVALUE n|NOMAXVALUE}] --最小值、最大值的限制
比如CREATE sequence s_test start with 1 increment by 1; --就是建立了額一個從1開始每次加1的序列。
訪問序列時,用 序列名稱.nextval的語法。

比如對於上表,如果想要id字段實現自增。則在每次插入記錄時,使用下面類似的語法(前提是表和序列已經建好)。
insert into test values (s_test.nextval,'張三');

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



3、創建自增觸發器

create or replace trigger TRI_TM_USER

before insert on TM_USER

for each row when (new.id is=0)   --when (new.id is=0) 不需要

begin

select SE_TM_USER.nextval into :new.id from dual;

end ;

//一般情況下會直接在程序里去調用序列,因為數據量太大的話,對表逐行掃描的話會影響性能


  帶有自增觸發器的插入:

TM_USER(ID,NAME,Constraint PRI_TM_USER PRIMARY KEY(ID) )

 

INSERT INTO TM_USER(NAME) VALUES ('NO id');

INSERT INTO TM_USER(ID,NAME) VALUES (1, 'id no use');

 

ID NAME
---------- --------------------
1 NO id
2 id no use




4、創建結構一樣的表

//創建與原表結構一樣的表(不帶數據)
CREATE TABLE TP_STUDENT_BACKUP AS SELECT * FROM TP_STUDENT WHERE 1=0;
//創建與原表結構一樣的表(帶數據)
CREATE TABLE TP_STUDENT_BACKUP AS SELECT * FROM TP_STUDENT WHERE 1=1;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM