MySQL 用户定义函数使用日期自动递增值

标签 mysql user-defined-functions auto-increment

我能够获取以下代码来创建一个函数,该函数有助于根据输入的日期和行数生成自动增量值。但是我无法让它在 MySQL 中执行。我以前从未创建过用户定义函数,因此请帮助纠正代码。 (此代码由MSSQL查询转换而来)

<小时/>
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;
<小时/>

*表 tikreqs 有一个 id 列和 createdate 列。

最佳答案

下面的代码可以完成工作,但可能需要进行一些调整。

<小时/>
CREATE TRIGGER GenRequestCode BEFORE INSERT ON tickreqs FOR EACH ROW
BEGIN
  SET NEW.codeyear = YEAR(NOW());
  SET NEW.requestcode = (SELECT IFNULL( MAX(requestcode) , 0 ) + 1 FROM tickreqs WHERE codeyear=YEAR(NOW()));
END

关于MySQL 用户定义函数使用日期自动递增值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45047541/

相关文章:

mysql - 如何在 MySQL 5.1 中增加 key 长度?

mysql - 如何使用 select 中的计算进行另一个计算

dataframe - 在pyspark中的数据帧上应用udf后出现错误

mysql - 匹配除换行符之外的任何字符(mysql 正则表达式)

bash - MySQL根据给定参数显示最早的重复项

SQL - 将表传递给 Select 中的 UDF

sql-server - 使用 UDF 作为 SQL Server 中表列的默认值

mysql - SQL - 即使添加 AUTO_INCRMENT (SQL Fiddle)后,ID 字段仍缺少默认值

mysql - 如何重用 auto_increment 值?

android - 仅在 INTEGER PRIMARY KEY 上允许使用 AUTOINCREMENT - android