我々は、テーブルを取得するために存在しているので、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;