MySQL 和 Oracle 主键自增长
生活随笔
收集整理的這篇文章主要介紹了
MySQL 和 Oracle 主键自增长
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、MySQL
1)建表
?auto_increment:每插入一條數據,客戶表(customers)的主鍵id就自動增1,如下所示
1 create table customers -- 創建客戶表 2 ( 3 id int auto_increment primary key not null, -- auto_increment:自增長 4 name varchar(15) 5 ); 6?
2)測試(實例)
1 insert into customers(name) values("張三"),("李四");-- 向客戶表中插入數據 2 3 select * from customers; -- 查詢客戶表?
?
?
2、Oracle
1)建表
1 create table student 2 ( 3 id number not null, -- 主鍵 4 name varchar2(20), 5 birthday date,6 age number(20),
7 phone varchar2(60),
8 email varchar2(10)
9 )
10 alter table student add constraint student_pk primary key (id); -- 主鍵
?
2)創建序列
1 /* 2 --創建序列Sequence 3 create sequence student_id 4 minvalue 1 --最小值 5 nomaxvalue --不設置最大值(由機器決定),或 根據表字段的值范圍設置 maxvalue6 maxvalue 99999999 -- 最大值 7 start with 1 --從1開始計數,數值可變 8 increment by 1 --每次加1,數值可變 9 nocycle --一直累加,不循環 10 nocache; --不建緩沖區。 如果建立cache那么系統將自動讀取cache值個seq,這樣會加快運行速度;如果在單機中使用cache,或者oracle死了,那么下次讀取的seq值將不連貫,所以不建議使用cache。 11 */ 12
13 14 -- 創建序列 15 create sequence student_id
16 minvalue 1 17 nomaxvalue
18 increment by 1
19 start with 1
20 nocache;
?Oracle sequence序列的創建、修改及刪除 詳解:http://www.cnblogs.com/dshore123/p/8269537.html
?
3)創建觸發器 (以下三種方式都行)
格式:
create or replace trigger 觸發器名before insert on 表名 for each row when (new.表的自增長字段 is null)beginselect 序列名.Nextval into:new.表的自增長字段 from dual;end; 1 -- 方式一 2 create or replace trigger tg_insertId3 before insert on student for each row when (new.id is null) -- 當id為NULL時觸發 4 begin5 select student_id.Nextval into:new.id from dual;6 end;7
8
9 -- 方式二 10 create or replace trigger tg_insertId 11 before insert on student for each row 12 begin 13 select student_id.Nextval into:new.id from dual; 14 end;
15
16
17 -- 方式三
18 create or replace trigger tg_insertId
19? before insert on student for each row
20 declare -- 聲明
21? -- 局部變量(student表里的字段)
22 begin
23? if updating then
24?????? insert into student
25?????? values(student_id.nextval,
26????????????? :old.name,
27?? ?????? :old.sal, -- 假如student表 有該字段(舉例、模板、樣式)
28?? ?????? :old.sex -- 假如student表 有該字段
29????????????? );
30? end if;
31 end;
4)測試(實例)
1 INSERT INTO student(name,birthday,age,phone,email) 2 VALUES('zhangsan',to_date('2018-01-10 19:55:45','yyyy-MM-dd hh24:mi:ss'),18,'13510086110','123456789@qq.com'); -- 插入數據3
4 INSERT INTO student(name,birthday,age,phone,email) 5 VALUES('zhangsan',to_date('2018-01-11 19:55:45','yyyy-MM-dd hh24:mi:ss'),20,'13510086110','123456789@qq.com');
6
7 8 select * from student; -- 查詢學生表
或者
1 insert into student(seq,name,birthday,age,phone,email) -- 這是帶上“自增長主鍵(seq)”的寫法 2 values(student_id.Nextval,'zhangsan',to_date('2018-01-10 19:55:45','yyyy-MM-dd hh24:mi:ss'),18,'13510086110','123456789@qq.com');?
?
?
| 原創作者:DSHORE 作者主頁:http://www.cnblogs.com/dshore123/ 原文出自:http://www.cnblogs.com/dshore123/p/8267240.html 歡迎轉載,轉載務必說明出處。(如果本文對您有幫助,可以點擊一下右下角的 推薦,或評論,謝謝!) |
?
G M T| 檢測語言世界語中文簡體中文繁體丹麥語烏克蘭語烏茲別克語烏爾都語亞美尼亞語伊博語俄語保加利亞語僧伽羅語克羅地亞語冰島語加利西亞語加泰羅尼亞語匈牙利語南非祖魯語卡納達語印地語印尼巽他語印尼爪哇語印尼語古吉拉特語哈薩克語土耳其語塔吉克語塞爾維亞語塞索托語威爾士語孟加拉語宿務語尼泊爾語巴斯克語布爾語(南非荷蘭語)希伯來語希臘語德語意大利語意第緒語拉丁語拉脫維亞語挪威語捷克語斯洛伐克語斯洛文尼亞語斯瓦希里語旁遮普語日語格魯吉亞語毛利語法語波蘭語波斯尼亞語波斯語泰盧固語泰米爾語泰語海地克里奧爾語愛爾蘭語愛沙尼亞語瑞典語白俄羅斯語立陶宛語索馬里語約魯巴語緬甸語羅馬尼亞語老撾語芬蘭語苗語英語荷蘭語菲律賓語葡萄牙語蒙古語西班牙語豪薩語越南語阿塞拜疆語阿爾巴尼亞語阿拉伯語韓語馬其頓語馬爾加什語馬拉地語馬拉雅拉姆語馬來語馬耳他語高棉語齊切瓦語 | ? | 世界語中文簡體中文繁體丹麥語烏克蘭語烏茲別克語烏爾都語亞美尼亞語伊博語俄語保加利亞語僧伽羅語克羅地亞語冰島語加利西亞語加泰羅尼亞語匈牙利語南非祖魯語卡納達語印地語印尼巽他語印尼爪哇語印尼語古吉拉特語哈薩克語土耳其語塔吉克語塞爾維亞語塞索托語威爾士語孟加拉語宿務語尼泊爾語巴斯克語布爾語(南非荷蘭語)希伯來語希臘語德語意大利語意第緒語拉丁語拉脫維亞語挪威語捷克語斯洛伐克語斯洛文尼亞語斯瓦希里語旁遮普語日語格魯吉亞語毛利語法語波蘭語波斯尼亞語波斯語泰盧固語泰米爾語泰語海地克里奧爾語愛爾蘭語愛沙尼亞語瑞典語白俄羅斯語立陶宛語索馬里語約魯巴語緬甸語羅馬尼亞語老撾語芬蘭語苗語英語荷蘭語菲律賓語葡萄牙語蒙古語西班牙語豪薩語越南語阿塞拜疆語阿爾巴尼亞語阿拉伯語韓語馬其頓語馬爾加什語馬拉地語馬拉雅拉姆語馬來語馬耳他語高棉語齊切瓦語 | ? | ? | ? | ? | ? |
| ? | 選項 : 歷史 : 反饋 : Donate | 關閉 |
轉載于:https://www.cnblogs.com/dshore123/p/8267240.html
總結
以上是生活随笔為你收集整理的MySQL 和 Oracle 主键自增长的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DWR推送的一些随笔
- 下一篇: linux cmake编译源码,linu