【问题标题】:inserting values from another table via a TRIGGER in MYSQL通过 MYSQL 中的 TRIGGER 从另一个表中插入值
【发布时间】:2021-02-04 13:28:07
【问题描述】:

我需要创建一个触发器,当新记录添加到“计划”表时,会在“结果”表中自动创建一条记录。 表“计划”有列:

  • 身份服务
  • IdEmployee
  • 集团
  • 日期
  • 类型(varchar)

表“结果”有列:

  • 身份服务
  • IdEmployee
  • IdClient
  • 日期
  • 结果(varchar) 但是 idClient 必须取自表“Clients”,对应于添加到计划中的组号。因此,触发器应该在结果表中创建多行而不是一行(因为一组中可以有多个客户端)

我正在附上我的代码,但其中显然有错误

CREATE DEFINER = CURRENT_USER TRIGGER `mydb`.`Plan_AFTER_INSERT` AFTER INSERT ON `Plan` FOR EACH ROW
BEGIN
insert into results (Result, idClient, Date, idService, idEmployee)
 values ('в процессе',idClient = (Select idClient from Clients
where Clients.Groupe = Plan.New.Groupe),
NEW.Date, NEW.idService, NEW.idEmployee);
END

【问题讨论】:

    标签: mysql triggers mysql-workbench workbench


    【解决方案1】:

    只要你的子查询只返回一行就可以了,所以最好限制它

    DELIMITER //
    CREATE DEFINER = CURRENT_USER TRIGGER `mydb`.`Plan_AFTER_INSERT` AFTER INSERT ON `Plan` FOR EACH ROW
    BEGIN
    insert into results (Result, idClient, Date, idService, idEmployee)
     values ('в процессе',(Select idClient from Clients
    where Clients.Groupe = New.Groupe ORDER BY idClient LIMIT 1),
    NEW.Date, NEW.idService, NEW.idEmployee);
    END//
    DELIMITER ;
    

    【讨论】:

    • 错误 1452: 1452: 无法添加或更新子行:外键约束失败 (mydb.results, CONSTRAINT fk_Results_Clients_idClient FOREIGN KEY (idClient) 参考clients (idClient)) SQL 语句: INSERT INTO mydb.Plan (Date, Groupe, Type, idService, idEmployee) VALUES ('2020-01-15', ' 2', 'Мастер-класс', '4', '1')
    • @AngelinaMat 我改了答案,请测试一下
    • 是的,它有效!多谢!!!!是否可以将几条记录添加到结果表中(与组中的人一样多)?
    猜你喜欢
    • 1970-01-01
    • 2015-05-28
    • 2016-03-27
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多