我在创建函数 GenerateID 时遇到问题。该函数应该创建一个格式如下的 ID:
年份的最后 2 位数字 + '-' + 增量唯一 ID,格式为 '0001' 最多只有 4 位数字,所以它应该看起来像这样 --> 13-0001、13-0002、13-0003 等。
所以现在我有了这个表和函数,我有唯一标识符,它是自动递增的 ID,而我有包含“13-0001”等数字的数字。基本上,我的函数将获取 ID 并通过使用 concat 和 cast 将它们与年份、“-”和“000”结合起来,但它看起来不起作用,因为我在创建函数时遇到语法错误。
--MYSQL
-- Function
DROP FUNCTION generateNumbers
CREATE FUNCTION generateNumbers (id int)
RETURNS VARCHAR(10)
RETURN CONCAT(substr((cast(CURDATE() as varchar(10))),3,2), '-', right(concat('000000', cast( id as varchar(6) ) ), 6) );
-- Trigger
DROP TRIGGER generateNumber_Insert
DELIMITER ||
CREATE TRIGGER generateNumber_Insert BEFORE INSERT ON ABC
FOR EACH ROW
BEGIN
SET NEW.Number = generateNumbers(abc.ID) ;
END
||
--
DROP TABLE abc;
Create table abc
(
ID int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Number VARCHAR(10),
name varchar(32)
)
我不确定我的语法是怎么回事。而且,使用CONvert() 比使用CAST() 更好吗?或相反亦然?似乎无法区分2的功能。
谢谢