【问题标题】:Trigger before insert on not concatenating columns在未连接列上插入之前触发
【发布时间】:2014-09-23 11:25:32
【问题描述】:

我创建了一个触发器,其中第一列和第二列将连接到第三列。

USE `customer_1`;
DELIMITER $$
CREATE DEFINER=`root`@`%` TRIGGER `Metric1_anpr_vega_BINS` BEFORE INSERT ON `Metric1_anpr_vega` FOR EACH ROW
BEGIN
  SET NEW.image_id = CONCAT(NEW.camera_id,'-', NEW.id);
END

Id      camera_id   image_id
4567    236         236-0 

(这里我在触发时无法获取行的 ID,它是 '0' 而不是 4567)

insert语句执行后,什么触发器会得到image_Id中的ID值。

如果我在插入后使用,我会收到此错误 - 触发器后不允许更新新行

【问题讨论】:

  • 使用 AFTER INSERT 代替。
  • 好吧,如果它的主键,你不能在插入之前获取插入的 id,并且不能在插入之后使用来更新同一个表。一种想法是获取最后一个 id,然后加一并设置 image_id
  • 你能告诉我如何获得最后一个 id。
  • 试试SET NEW.image_id = CONCAT(NEW.camera_id,'-', LAST_INSERT_ID() + 1);
  • 你可以使用查询来获取最后一个 id,然后增加它。在这里查看它可能会对您有所帮助stackoverflow.com/questions/16597467/…

标签: mysql


【解决方案1】:
USE `customer_1`;
DELIMITER $$
CREATE DEFINER=`root`@`%` TRIGGER `Metric1_anpr_vega_BINS` AFTER INSERT ON `Metric1_anpr_vega` FOR EACH ROW
BEGIN
  SET NEW.image_id = CONCAT(NEW.camera_id,'-', NEW.id);
END

【讨论】:

  • 触发器后不允许更新新行
猜你喜欢
  • 2015-02-14
  • 1970-01-01
  • 1970-01-01
  • 2016-07-12
  • 1970-01-01
  • 2012-12-11
  • 2017-08-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多