MySQL如何設(shè)置自動(dòng)增長序列SEQUENCE的方法
本文主要介紹了MySQL如何設(shè)置自動(dòng)增長序列 SEQUENCE,具體如下:
解決思路:由于mysql不帶sequence,所以要手寫的,創(chuàng)建一張儲(chǔ)存sequence的表(emp_seq),然后手動(dòng)插入一條數(shù)據(jù) ,最后自定義一個(gè)函數(shù)來處理要增長的值。
1.創(chuàng)建表emp_seq,用來存放sequence值:
說明:
- name這個(gè)列,是為了讓函數(shù)更好的通過條件來進(jìn)行DML操作,
- start_value,儲(chǔ)存了自增序列開始時(shí)的值,
- increment_value,存儲(chǔ)了自增序列步進(jìn)的值。
create table emp_seq ( name varchar(50) not null primary key, start_value int not null, increment_value int not null default 1 );
2.手動(dòng)插入數(shù)據(jù):
說明:
- ‘empno'見名之意,
- 第一個(gè)1,說明序列從1開始,
- 第二個(gè)1,說明序列每次增長1。
insert into emp_seq values('empno',1,1);
3.定義函數(shù) nextval:
說明:
- DELIMITER // ->定義語句結(jié)束符,其中//前面有一個(gè)空格,平常我們都是用分號(hào);作為語句結(jié)束符。但是創(chuàng)建的函數(shù)中,是多條語句組合而成,每條語句也是使用分號(hào);作為語句結(jié)束符,若沒有重新定義語句結(jié)束符,數(shù)據(jù)庫會(huì)認(rèn)為declare i int;這里的分號(hào)是結(jié)束符,會(huì)報(bào)錯(cuò)。所以在這我們重新定義一個(gè)語句結(jié)束符//,直到end;//這里才會(huì)結(jié)束整段代碼。
- function 自定義函數(shù) (user-defined function UDF),它是對MySQL功能的一個(gè)擴(kuò)展,
- declare 聲明變量
DELIMITER // create function nextval(str varchar(50)) returns integer begin declare i int; set i=(select start_value from emp_seq where name=str); update emp_seq set start_value=i+increment_value where name=str; return i; end; //
4.恢復(fù)默認(rèn)的語句結(jié)束符:
說明:
- DELIMITER ; ->定義語句結(jié)束符(其中delimiter后跟了一個(gè)空格一個(gè)分號(hào)),也就是把分號(hào)作為語句結(jié)束符。因?yàn)樯厦嬉呀?jīng)把函數(shù)建立好了,所以在這里重新定義結(jié)束符,為的是以后更方便的執(zhí)行SQL語句,平常我們使用SQL語句,習(xí)慣用分號(hào)作為結(jié)束符的。
DELIMITER ;
5.為了更方便的執(zhí)行SQL命令,我把這些代碼復(fù)制到記事本中,并把文件存到D盤根目錄下,改名為emp_seq.sql
?
6.執(zhí)行外部SQL腳本命令
若沒有提示,說明建立成功。如何執(zhí)行外部SQL腳本命令,客官可移步:MySQL執(zhí)行外部sql腳本文件的命令
?
7.成功導(dǎo)入sql腳本后,那咱們就需要驗(yàn)證一下,進(jìn)入mysql,并進(jìn)入數(shù)據(jù)庫,我這里是jsd170101
OK,連續(xù)執(zhí)行sql語句獲取序列,從上圖清楚的看到,結(jié)果從1開始,每次自增1
8.下面說說如何應(yīng)用在DML語句中
我的數(shù)據(jù)庫里已有empno=6的數(shù)據(jù),這里我讓start_value增長到7,再插入一條信息:
查看下結(jié)果:
到此這篇關(guān)于MySQL如何設(shè)置自動(dòng)增長序列SEQUENCE的方法的文章就介紹到這了,更多相關(guān)MySQL 自動(dòng)增長序列SEQUENCE內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java實(shí)戰(zhàn)之課程在線學(xué)習(xí)系統(tǒng)的實(shí)現(xiàn)
本文將采用SpringBoot+Spring+Mybatis+Thyeleaf實(shí)現(xiàn)一個(gè)課程在線學(xué)習(xí)系統(tǒng),采用SpringBoot框架實(shí)現(xiàn)?前臺(tái)模板用的thymeleaf數(shù)據(jù)庫層采用mybatis框架注解模式,感興趣的可以了解一下2022-04-04Java的鎖機(jī)制:synchronized和CAS詳解
這篇文章主要介紹了Java的鎖機(jī)制synchronized和CAS詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-09-09Spring?Boot?4.0對于Java開發(fā)的影響和前景
探索Spring?Boot?4.0如何徹底革新Java開發(fā),提升效率并開拓未來可能性!別錯(cuò)過這篇緊湊的指南,它帶你領(lǐng)略Spring?Boot的強(qiáng)大魅力和潛力,準(zhǔn)備好了嗎?2024-02-02Java基礎(chǔ)總結(jié)之Thymeleaf詳解
Thymeleaf是一種現(xiàn)代的基于服務(wù)器端的Java模板引擎技術(shù),也是一個(gè)優(yōu)秀的面向Java的XML、XHTML、HTML5頁面模板,它具有豐富的標(biāo)簽語言、函數(shù)和表達(dá)式,在使用Spring Boot框架進(jìn)行頁面設(shè)計(jì)時(shí),一般會(huì)選擇Thymeleaf模板,需要的朋友可以參考下2021-05-05java中ArrayList和LinkedList的區(qū)別詳解
這篇文章主要介紹了java中ArrayList和LinkedList的區(qū)別詳解,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2021-01-01