一意の番号を生成するために、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 ステートメントに関連しています。