1

一意の番号を生成するために、MySQL でユーザー定義関数を作成しようとしています。MySQL の auto_increment 機能はシードを 1 ずつインクリメントするだけなので、1 以上インクリメントする必要があるフィールドを処理する関数が必要です。これが私のSQLスクリプトです:

DELIMITER $$
CREATE FUNCTION `getUniqueID`(
    id_type CHAR(1)
) RETURNS INT(10)
BEGIN
    DECLARE run INT(10);

    START TRANSACTION;

        SELECT unique_gen_id INTO @run FROM tbl_unique_seed WHERE id_type = @id_type;
    UPDATE tbl_unique_seed SET unique_gen_id = (unique_gen_id + 1) WHERE id_type = @id_type;

    COMMIT;

    RETURN run;
END$$
DELIMITER ;

MySQL の経験はあまりありませんが、SQL Server でこの種の関数を作成するのは非常に簡単です。この問題の解決策を見つけていただけると助かります。現在、いくつかの構文エラーに直面しています。最も基本的なものは、トランザクションの構文と select ステートメントに関連しています。

4

1 に答える 1

0

ここのドキュメントを参照してください: http://dev.mysql.com/doc/refman/5.0/en/replication-options-master.html#sysvar_auto_increment_increment

通常は 1 である auto_increment_increment の値を変更できます。

于 2013-03-09T06:08:51.830 に答える