我在MySQL中创建了一个触发器,并在'unique_id'上获得了一个'未知的系统变量',这是我的'pending_jobs'表中的一行。触发器代码如下:
CREATE TRIGGER format_pending_jobs_unique
BEFORE INSERT ON pending_jobs
FOR EACH ROW
BEGIN
SET unique_id = CONCAT(prefix_unique_id, id);
END
基本上,当插入新行时,它将两行(prefix_unique_id和id)连接到行unique_id中。 prefix_unique_id行的默认值为“sa”,它将是所有这些值的值,id是具有自动增量的行的索引。我是触发器的新手,我在Stack Overflow上的帖子中读到使用:=
而不是=
,但这并没有解决问题。我正在使用phpMyAdmin并且看到unique_id(以及prefix_unique_id和id)行都存在。任何帮助都会很棒。谢谢!
答案 0 :(得分:3)
我会这样写你的触发器:
CREATE TRIGGER format_pending_jobs_unique
BEFORE INSERT ON pending_jobs
FOR EACH ROW
SET new.unique_id =
CONCAT(
new.prefix_unique_id,
(SELECT AUTO_INCREMENT
FROM information_schema.TABLES
WHERE TABLE_SCHEMA=DATABASE()
AND TABLE_NAME='pending_jobs')
);
请参阅小提琴here。
NEW指的是要插入的新行的列,因此您必须使用new.unique_id
和new.prefix_unique_id
。要引用ID的新值,不能使用new.id
,但需要使用返回表的下一个auto_increment值的子查询。