Function GenerateID の作成に問題があります。この関数は、次の形式の ID を作成することになっています。
年の下 2 桁 + '-' + '0001' の形式を持つインクリメンタルな一意の ID 最大 4 桁のみなので、次のようになります --> 13-0001、13-0002、13-0003 など。
これで、このテーブルと関数ができました。ID を自動インクリメントする一意の識別子があり、「13-0001」などの番号を含む番号があります。基本的に、私の関数は ID を取得し、concat とキャストを使用して ID を年、「-」、および「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)
)
私の構文がどうなっているのかわからない。また、CAST() よりも CONvert() を使用する方が良いですか? またはその逆?2の機能を区別できないようです。
ありがとう