日付と行数を入力して自動インクリメント値を生成する関数を作成するには、次のコードを取得できました。しかし、私はそれをMySQLで実行することはできません。私は決して前にユーザー定義関数を作成することはありませんので、親切にコードを修正するのを助けてください。 (このコードは、MSSQLクエリから変換された)MySQLユーザー定義関数の自動インクリメント値を使用して日付
CREATE FUNCTION udf_ComputeColumn (p_id int, p_CreateDate date)
RETURNS char(8)
BEGIN
DECLARE v_revtal char(8);
DECLARE v_NumberOfRowsToday bigint;
-- get the number of rows inserted in the same day before the current row
SELECT COUNT(*) INTO v_NumberOfRowsToday
FROM tickreqs
WHERE createdate= p_CreateDate
AND id < p_id;
-- calculate the string to return
SET v_revtal = DATE_FORMAT (p_CreateDate, 12) + RIGHT('0000' +
CAST(v_NumberOfRowsToday as varchar(1)), 4);
RETURN v_revtal;
END;
*表tickreqsは、IDカラムとCREATEDATE列を有します。
理由だけではなく、これに代えて[AUTO_INCREMENT](https://dev.mysql.com/doc/refman/5.7/en/example-auto-increment.html)の列を持っていませんか? –
日付に基づいて自動インクリメントが必要です。 20170001、20180001のように。AUTO_INCREMENTは増分をすべて維持します。 – Kakada
[自動インクリメント - 毎年の自動リセット]の可能な複製(https://stackoverflow.com/questions/30167587/auto-increment-automatic-reset-for-each-year) –