カスタムのシリアル番号を作成します。

我々は、テーブルを取得するために存在しているので、1により異なるMySQLとOracleへの直接シリアル番号を作成することはできません。
DROP TABLEの
    IFは、シーケンスをEXISTS。
CREATE TABLEを
    シーケンス
    (
        名前VARCHAR(50)NOT NULL、
        現在の値BIGINT NOT NULL、
        インクリメントINT NOT NULL DEFAULTの1、
        PRIMARY KEY(名)
    )
    ENGINE = InnoDBは、
名前と番号のシーケンスを挿入
INSERT INTOシーケンスVALUES( 'SEQ_TRZ_MEMBER_NO'、10000000000,1)。
図に示すテーブルです。
CURRVAL関数を作成します。2.
この関数は、現在の値を取得します
DROP FUNCTIONのIFは、CURRVAL EXISTS。  
DELIMITER $$
機能CURRVAL(SEQ_NAMEのVARCHAR(50))を作成  
RETURNS BIGINT(20)  
ベギン  
  DECLARE値BIGINT。  
  SET値= 0。  
  値に現在の値を選択
  シーケンスから  
  WHERE名= SEQ_NAME。  
  戻り値;  
END $$
DELIMITER;
 
実行
( 'SEQ_TRZ_MEMBER_NO')CURRVALを選択
 
3.関数を作成NEXTVAL
実際には、アップデートを行うための手順を追加し、現在の価値に基づいて
DROP FUNCTIONのIFは、NEXTVAL EXISTS。  
DELIMITER $$  
機能CREATE NEXTVAL(SEQ_NAME VARCHAR(50))  
RETURNS BIGINT  
SQLは、CONTAINS  
ベギン  
   UPDATEシーケンス  
   SET現在の値=現在の値+インクリメント  
   WHERE名= SEQ_NAME。  
   返りCURRVAL(SEQ_NAME)。  
END $$  
DELIMITER;
 
 
実行
( 'SEQ_TRZ_MEMBER_NO')NEXTVALを選択
 
 
注意:
エラーがある場合は、程度に設定することができます
グローバルlog_bin_trust_function_creatorsを設定= TRUE;
 

おすすめ

転載: www.cnblogs.com/qixiajue1993/p/11824490.html