[轉]MySQL如何設定自動成長序列 SEQUENCE

來源:互聯網
上載者:User

標籤:efi   char   .sql   變數   自訂函數   prim   lin   next   l命令   

原文地址:70148516

解決思路:由於mysql不帶sequence,所以要手寫的,建立一張儲存sequence的表(emp_seq),然後手動插入一條資料 ,最後自訂一個函數來處理要增長的值。

 

1.建立表emp_seq,用來存放sequence值:
說明:
  • name這個列,是為了讓函數更好的通過條件來進行DML操作,
  • start_value,儲存了自增序列開始時的值,
  • increment_value,儲存了自增序列步進的值。
  1.  
  2. create table emp_seq (
  3. name varchar(50) not null primary key,
  4. start_value int not null,
  5. increment_value int not null default 1
  6. );
2.手動插入資料:
說明:
  • ‘empno’見名之意,
  • 第一個1,說明序列從1開始,
  • 第二個1,說明序列每次增長1。
insert into emp_seq values(‘empno‘,1,1);
3.定義函數 nextval:
說明:
  • DELIMITER //  ->定義語句結束符,其中//前面有一個空格,平常我們都是用分號;作為語句結束符。但是建立的函數中,是多條語句組合而成,每條語句也是使用分號;作為語句結束符,若沒有重新定義語句結束符,資料庫會認為declare i int;這裡的分號是結束符,會報錯。所以在這我們重新定義一個語句結束符//,直到end;//這裡才會結束整段代碼。
  • function 自訂函數 (user-defined function UDF),它是對MySQL功能的一個擴充,
  • declare 聲明變數
 
  1.  
  2. DELIMITER //
  3. create function nextval(str varchar(50)) returns integer
  4. begin
  5. declare i int;
  6. set i=(select start_value from emp_seq where name=str);
  7. update emp_seq
  8. set start_value=i+increment_value
  9. where name=str;
  10. return i;
  11. end;
  12. //
  13.  

4.恢複預設的語句結束符:
說明:

DELIMITER ; ->定義語句結束符(其中delimiter後跟了一個空格一個分號),也就是把分號作為語句結束符。因為上面已經把函數建立好了,所以在這裡重新定義結束符,為的是以後更方便的執行SQL語句,平常我們使用SQL語句,習慣用分號作為結束符的。

 
  1. DELIMITER ;
  2.  

5.為了更方便的執行SQL命令,我把這些代碼複製到記事本中,並把檔案存到D盤根目錄下,改名為emp_seq.sql  6.執行外部SQL指令碼命令,若沒有提示,說明建立成功。如何執行外部SQL指令碼命令,客官可移步:MySQL執行外部sql指令檔的命令  7.成功匯入sql指令碼後,那咱們就需要驗證一下,進入mysql,並進入資料庫,我這裡是jsd170101 

 

OK,連續執行sql語句擷取序列,從清楚的看到,結果從1開始,每次自增1

 

8.下面說說如何應用在DML語句中我的資料庫裡已有empno=6的資料,這裡我讓start_value增長到7,再插入一條資訊:  查看下結果: 

[轉]MySQL如何設定自動成長序列 SEQUENCE

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.