在MySQL中建立實現自增的序列(Sequence)
由於mysql和oracle不太一樣,不支援直接的sequence,所以需要建立一張table來模擬sequence的功能,理由sql語句如下:
第一步:建立--Sequence 管理表
第二步:建立--取當前值的函式
第三步:建立--取下一個值的函式
第四步:建立--更新當前值的函式
第五步:測試函式功能
當上述四步完成後,可以用以下資料設定需要建立的sequence名稱以及設定初始值和獲取當前值和下一個值。
- INSERT INTO sequence VALUES ('TestSeq', 0, 1);----新增一個sequence名稱和初始值,以及自增幅度
- SELECT SETVAL('TestSeq', 10);---設定指定sequence的初始值
- SELECT CURRVAL('TestSeq');--查詢指定sequence的當前值
- SELECT NEXTVAL('TestSeq');--查詢指定sequence的下一個值
在java程式碼中,可直接建立sql語句查詢下一個值,這樣就解決了流水號唯一的問題。
貼出部分程式碼(已測試透過)
ps:在應用中,還有一種用java程式碼去實現模擬自增sequence的方式,具體思路是建立一張存放sequence的table,然後透過java呼叫sql語句去查詢和修改這個table中指定sequence名稱的值,這種方式請加上synchronized。具體程式碼這裡就不上傳了,因為實現了,未去測試過。
在 oracle 中, sequence 提供多表多欄位可共用一個不重複值。 Mysql 中存在自增列,基本可以滿足 PK 的要求。但自增列存在限制:
a. 只能用於表中的一個欄位,一張不能同時存在兩個以上的自增列 ;
b. 自增列必須被定義為 key ( PK 或 FK ) ;
c. 自增列不能被多個表共用 ;
d. 當 insert 語句不包括自增欄位或將其值設定為 NULL 時,該值會自動填上。
在不要求欄位順序遞增的情況下,可以在 Mysql 中實現序列,再來看下面一個例子:
在 SQL 中使用序列:
建立序列,往sequence表插入值即可:
mysql> insert into sequence set name='myseq';
檢視當前已建序列:
mysql> select * from sequence;
獲得序列的下一個值,第一次使用,因此值為1:
mysql> select nextval('myseq');
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28282660/viewspace-2061242/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Mysql實現自增長編號,日期+序列MySql
- Redis實現sequence功能自增idRedis
- mysql實現sequenceMySql
- 【轉】MySQL中增加sequence管理功能(模擬建立sequence)MySql
- 自增長列和序列的區別(identity與sequence的區別)IDE
- Oracle 基本操作之 建立自增欄位方法-ORACLE SEQUENCEOracle
- Oracle建立自增欄位方法-ORACLE SEQUENCE的簡單介紹Oracle
- 利用 Redis 生成序列號的功能實現編號自增Redis
- MySql序列實現MySql
- Oracle建立自增欄位方法-ORACLE SEQUENCE的簡單介紹(轉帖)Oracle
- 「crudapi」零程式碼實現訂單序列號SequenceAPI
- MySQL 中的自增主鍵MySql
- iReport中序號自增的實現
- PostgreSQL 序列(Sequence)SQL
- Oracle - Sequence序列Oracle
- Oracle序列sequenceOracle
- 自增ID的實現
- python sequence序列Python
- Oracle之Sequence(序列)Oracle
- 詳解序列(sequence)
- 裁剪序列Cut the Sequence
- 在C#中實現Json的序列化與反序列化C#JSON
- MyBatis的Insert操作自增主鍵的實現,Mysql協議與JDBC實現MyBatisMySql協議JDBC
- mysql自增和orcale自增MySql
- 深入瞭解MySQL中的自增主鍵MySql
- MyBatis實現MySQL表欄位及結構的自動增刪MyBatisMySql
- MySQL 8 和 MySQL 5.7 在自增計數上的區別MySql
- 為Oracle資料庫表建立自動增長序列及Oracle的常見操作Oracle資料庫
- ORACLE9I中建立自增欄位的方法(轉)Oracle
- postgresql重置序列和自增主鍵SQL
- 在MYSQL中快速建立空表薦MySql
- 一句話實現MySQL庫中的有序列舉條件分組MySql
- jmeter如何實現引數自增JMeter
- 在 Postman 中實現自動化測試的全面指南Postman
- [題解]P4597 序列 sequence
- Go實現對MySQL的增刪改查GoMySql
- MySQL自增約束MySql
- mysql自增長列MySql