함수 GenerateID를 만드는 데 문제가 있습니다. 이 함수는 다음 형식의 ID를 생성해야합니다.MySQL에서 함수 생성 중 오류가 발생했습니다.
연도의 마지막 두 자리 + '-'+ 형식이 '0001'인 증분 인 고유 한 최대 4 자리수 이런 식으로 -> 13-0001, 13-0002, 13-0003 등
그래서 지금은 내가 수를 가지고있는 동안 자동 증분 ID 있는 고유 식별자가이 테이블과 기능 이있는 '13 -0001 '등 번호가 포함됩니다. 기본적으로 내 함수는 ID를 가져 와서 연, '-'및 '000' 을 concat 및 cast를 사용하여 결합하지만 내 생성시 구문 오류가 발생하면 작동하지 않는 것처럼 보입니다. 기능.
--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)
)
내 구문이 무엇인지 잘 모르겠습니다. 또한 CAST()보다 COnvert()를 사용하는 것이 좋습니다. 혹은 그 반대로도? 2의 기능을 차별화하지 못하는 것 같습니다.
관련 코드 (예 : 함수 만) 만 입력 할 수 있습니다. –
테이블에 'generateNumber'라는 열이없고 열의 이름은 'Number'입니다. – Barmar
CAST와 CONVERT 사이에는 차이점이 없습니다. 하지만 둘 중 하나 대신'DATE_FORMAT()'를 사용합니다. – Barmar