可以使用序列實現id自增,主鍵的語法為primary key。
成都創新互聯10多年企業網站制作服務;為您提供網站建設,網站制作,網頁設計及高端網站定制服務,企業網站制作及推廣,對濕噴機等多個領域擁有多年的網站維護經驗的網站建設公司。
當一個序列第一次被查詢調用時,它將返回一個預定值。在隨后的每次查詢中,序列將產生一個按指定的增量增長的值。序列可以循環,或者是連續增加的,直到指定的最大值為止。
創建序列語法如下: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;
擴展資料:
在數據表中,有時候需要主鍵值自動增加,但在Oracle數據庫中,沒有象Mysql的Autoincrement一樣自動增長的數據類型。在實現Oracle數據庫字段自增功能時,利用DML觸發器來完成。
觸發器(trigger)是一些過程,當發生一個特定的數據庫事件時就執行這些過程,可以使用觸發器擴充引用的完整性。DML即數據操縱語言,用于讓用戶或程序員使用,實現對數據庫中數據的操作。基本的數據操作分成兩類四種:檢索(查詢)和更新(插入、刪除、修改)。
觸發器類似于函數和過程,其在數據庫中以獨立身分存在。觸發事件可以是對數據庫表的DML(insert、update或delete)操作等。
創建表結構:
向表中添加主鍵約束
向表中添加Sequences
添加字段的語法:
修改字段的語法:
刪除字段的語法:
添加、修改、刪除多列的話,用逗號隔開。
--創建序列的語法 --
CREATE SEQUENCE SEQ_POS_ORDER_ONLINE_ID
INCREMENT BY 1
START WITH 1000000000000042 -- 從1開始計數 或 MINVALUE 1 或 NOMINVALUE --的設置最小值 不設置最小值
NOMAXvalue -- 不設置最大值 或 MAXVALUE 10 --設置最大值 10
NOCYCLE -- 一直累加,不循環 或
CACHE 10; --設置緩存cache個序列,如果系統down掉了或者其它情況將會導致序列不連續,也可以設置為---------NOCACHE
提示設置:tools--preferences--userinterface--codeassistant--在右邊選中authomaticallyactivated即可快捷鍵設置設置方法:菜單Tools--Preferences--Editor--AutoReplace.--Edit如:s+空格鍵=select*from
示例腳本:
--?Create?table
create?table?Test
(
c_time???date?default?sysdate?not?null,
m_time???date?not?null,
opt_key??varchar2(20),
opt_name?varchar2(20)
)
tablespace?SYSTEM
storage
(
initial?64K
minextents?1
maxextents?unlimited
);
--?Add?comments?to?the?table?
comment?on?table?Test
is?'系統選項表';
--?Add?comments?to?the?columns?
comment?on?column?Test.c_time
is?'記錄創建時間';
comment?on?column?Test.m_time
is?'記錄修改時間';
--?Create/Recreate?primary,?unique?and?foreign?key?constraints?
alter?table?Test
add?constraint?opt_code_UNIQUE?primary?key?(OPT_KEY,?OPT_NAME);
登陸plsql ---點開左側的table,右鍵,新建 即可 ? ,在新建表的中,右下角有個“查看SQL“的按鈕,可以看到腳本
觸發器是一種特殊的存儲過程 下面是觸發器的詳細說明
ORACLE 觸發器
ORACLE產生數據庫觸發器的語法為
create [or replace] trigger 觸發器名 觸發時間 觸發事件
on 表名
[for each row]
pl/sql 語句
其中
觸發器名 觸發器對象的名稱 由于觸發器是數據庫自動執行 的 因此該名稱只是一個名稱 沒有實質的用途
觸發時間 指明觸發器何時執行 該值可取
before 表示在數據庫動作之前觸發器執行
after 表示在數據庫動作之后出發器執行
觸發事件 指明哪些數據庫動作會觸發此觸發器
insert 數據庫插入會觸發此觸發器
update 數據庫修改會觸發此觸發器
delete 數據庫刪除會觸發此觸發器
表 名 數據庫觸發器所在的表
for each row 對表的每一行觸發器執行一次 如果沒有這一選項 則只對整個表執行一次
舉例 下面的觸發器在更新表auths之前觸發 目的是不允許在周末修改表
create trigger auth_secure
before insert or update or delete file://對整表更新前觸發
on auths
begin
if(to_char(sysdate DY )= SUN
RAISE_APPLICATION_ERROR( 不能在周末修改表auths );
( RAISE_APPLICATION_ERROR是函數 括弧內的 第一參數范圍在 ~ 之間 第二個
參數是字符串 大小在 k 超過的話 系統自動截斷)
end if;
lishixinzhi/Article/program/Oracle/201311/17609