我正在尝试在mysql中创建一个触发器,在向表A中插入新记录后,使用表C中的值更新表B。我尝试了以下代码的一些变体,但无法获取工作。谁能指出我正确的方向?
delimiter //
CREATE TRIGGER updateC AFTER Insert ON Table A
FOR EACH ROW in TableB
BEGIN
IF TableB.Group = 1 THEN
Insert into TableC(inserthere) values (TableB.AddThis);
END IF;
END;//
delimiter ;
表A包含字段ProjectID |任务组。
表B包含字段ID | DefaultTask |任务组。
表C包含字段ID | ProjectID | DefaultTask。
当将新的ProjectID和TaskGroup添加到表A时,我想在TableB中找到具有相同TaskGroup的所有DefaultTask,然后将这些DefaultTasks和ProjectID插入为表C中的新记录
有人能指出我正确的方向吗?
插入到A
中的记录必须定义B
中必须更新的记录,以及C
中必须为此更新取值的记录。
例如,可能是
CREATE TRIGGER updateC
AFTER INSERT
ON Table A
FOR EACH ROW
UPDATE B, C
SET B.field1 = C.field2
WHERE B.field3 = NEW.field4
AND C.field5 = NEW.field6;
在评论后解释。
这将向您展示如何执行此操作,您必须测试INSERT查询,并假定id是自动递增。
每个NEW.columname是插入的行的值。
使用INSERT INTO ... SELCT,您可以从Taböleb的所有符合要求的值中插入散装插入件的公头
DELIMITER //
CREATE TRIGGER updateC AFTER Insert ON TableA
FOR EACH ROW
BEGIN
INSERT INTO TableC (ProjectID,DefaultTask) SELECT NEW.ProjectID,DefaultTask
FROM TABLEB
WHERE TaskGroup = NEW.TaskGroup;
END;//
DELIMITER ;
FYI:以大写形式编写sql Comands,它使读取变得更加简单