如何在mysql CONCAT函数中使用自动增量值?

时间:2012-09-14 12:01:51

标签: mysql concat

我有这个问题:

我想在图像表中插入新行,如下所示:

INSERT INTO image (pr_id, kelias, tipas) VALUES(111111, CONCAT('1111111111', '_', image.id, '.jpg'), '0')

但是当我尝试输入CONCAT值时,我每次都返回0时,image.id函数出错了。

image.id是自动增量。

4 个答案:

答案 0 :(得分:1)

您可以使用BEFORE INSERT触发器 -

CREATE TRIGGER trigger1
  BEFORE INSERT
  ON image
  FOR EACH ROW
BEGIN
  SET NEW.kelias = CONCAT(NEW.kelias, NEW.pr_id);
END

答案 1 :(得分:0)

尝试

INSERT INTO image (pr_id, kelias, tipas)
SELECT 11111, 
       CONCAT('1111111111', '_', max(image.id) + 1, '.jpg'), 
       '0'
FROM image

答案 2 :(得分:0)

mysql_query("INSERT INTO image (kelias, tipas) VALUES('anything', '0')");
$img_id = mysql_insert_id();
$kelias = '1111111111' . '_' . $img_id . '.jpg';
mysql_query("UPDATE image SET kelias='$kelias' WHERE pr_id = $img_id");

答案 3 :(得分:0)

您可以使用INSERT触发器-

CREATE TRIGGER trigger1
  BEFORE INSERT
  ON image
  FOR EACH ROW
BEGIN
  SET NEW.kelias = CONCAT( NEW.kelias , '_', 

  (SELECT AUTO_INCREMENT
  FROM information_schema.TABLES
  WHERE TABLE_SCHEMA = "<your database name here>"
  AND TABLE_NAME = "image" )

  , '.jpg');
END

然后通过以下方式获得所需的结果:

INSERT INTO image (pr_id, kelias, tipas) VALUES(111111, '1111111111', '0')