无法使用多个表创建 MySQL 触发器

Can't create MySQL Trigger with several tables

我有一个包含 3 tables:

的数据库
  1. delivery
  2. company
  3. details

company table 有一列从 1 到 10 的评级,如果评级超过 5,我们可以理解这家公司是可靠的和详细的,如果价格超过1000是昂贵的细节。

Table delivery 正在为 companydetails 连接 table 现在我正在尝试创建一个触发器来阻止 Insert 当有人试图在一家不可靠的公司添加 table delivery 昂贵的细节时,但我不明白如何使用来自不同 table 的数据创建触发器.

我正在使用 MySQL

DELIMITER //
CREATE TRIGGER before_insert_1
BEFORE INSERT
ON delivery
FOR EACH ROW
IF company.rating < 5 AND detail.Det_Price > 1000 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Unreliable company';
END IF //
DELIMITER ;

您应该复习 https://dev.mysql.com/doc/refman/8.0/en/trigger-syntax.html 并特别注意对 NEW 的讨论。值。

触发器的简单版本可能像

DELIMITER //
CREATE TRIGGER before_insert_1
BEFORE INSERT
ON delivery
FOR EACH ROW
begin
declare vrating int;
declare vprice  int;

select company.rating into vrating from company where company.id = new.company_id;
select detail.det_price into vprice from detail where detail.? = new.?;
IF vrating < 5 AND vPrice > 1000 THEN
   SIGNAL SQLSTATE '45000'
   SET MESSAGE_TEXT = 'Unreliable company';
END IF ;
end //
DELIMITER ;

但由于您没有发布 table 定义,我无法确切地告诉您应该如何选择。