我正在尝试将我从 T-SQL 创建的函数重新创建到 MySQL,但我在使触发器工作时遇到了困难。
这是我应该做的: 1. 我需要创建一个函数,该函数将根据这种格式创建一个专门的 ID:日期 - 6 位代码,这将是增量的实际 ID
- 接下来我需要创建触发器,每当我尝试插入新记录时,它将调用我创建的函数来生成 ID。
这就是我所做的:
-- created the table first
DROP TABLE abc
Create table abc
(
IDnumber INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name varchar(32)
)
-- Function
DROP FUNCTION GenerateID
CREATE FUNCTION GenerateID (id int)
RETURNS VARCHAR(10)
RETURN CONCAT(substr((cast(CURDATE() as char(10))),3,2), '-', right(concat('000000', cast( id as char(6) ) ), 6) );
-- create the Trigger
DELIMITER ||
CREATE TRIGGER ID_Insert BEFORE INSERT ON ABC
FOR EACH ROW
BEGIN
UPDATE abc
SET abc.IDNumber = generateID(abc.IDNumber) ;
-- FROM abc
-- INNER JOIN Inserted ON abc.IDNumber = inserted.IDNumber;
END
||
我注释掉了 --FROM abc 和 --INNER JOIN 部分,因为这是我在 T-SQL 中使用的语法。我试图在此处应用它,但出现语法错误。现在触发器已成功创建,但问题是我现在开始插入记录时。
insert into abc (name) values('cammie')
insert into abc (name) values('helios')
etc
我收到错误 1442,上面写着“无法使用触发器/函数更新表,因为它已在调用此函数/sp 的语句中使用”
你觉得我错过了什么?