我在創建Function GenerateID時遇到了問題。 功能應該是建立在以下格式的ID:在MySQL中創建函數的錯誤
最後2個位數的年份+的「 - 」 +唯一ID是漸進具有格式「0001」最大隻有那麼它應該看4digits這樣的 - > 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.
謝謝
只能將相關代碼(即僅用於函數) –
該表沒有名爲'generateNumber'的列,該列名爲'Number'。 – Barmar
CAST和CONVERT之間沒有區別。但我會使用'DATE_FORMAT()'而不是其中任何一個。 – Barmar