1

我正在 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)行都存在。任何帮助都会很棒。谢谢!

4

1 回答 1

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')
   );

在此处查看小提琴。

NEW 是指要插入的新行的列,因此您必须使用new.unique_idand new.prefix_unique_id。要引用 ID 的新值,您不能使用new.id,但需要使用返回表的下一个 auto_increment 值的子查询。

于 2013-05-12T22:18:24.810 回答