删除最后一次匹配SQL的记录

时间:2018-04-04 22:47:39

标签: mysql sql

我有两个表链接在一起如下:

Owner table | owner_id = Primary Key
Car table | car_id = Primary Key | owner_id = Foreign Key

基本上,每次添加新车记录时,都会将其分配给所有者。车主可以拥有多辆车,但每辆车只能属于一个车主。

是否可以在最后一个“匹配”记录中设置约束或从所有者表中删除所有者的约束。

例如,owner_1拥有5辆汽车。在他们拥有的最后一辆车被删除后,它也会从数据库中删除所有者记录。

1 个答案:

答案 0 :(得分:2)

我认为删除后触发器可以完成这项工作。每次删除汽车记录时,都应查询同一汽车表,看是否有另一辆汽车与您要删除的汽车拥有相同的所有者。 像这样的东西:

编辑:修复选择查询:D

DELIMITER $$
CREATE TRIGGER delete_owners_delete AFTER DELETE ON Car FOR EACH ROW
BEGIN
   DECLARE iCounter integer;
   SELECT COUNT(owner_id) INTO @iCounter FROM car c WHERE c.owner_id = old.owner_id;
   IF (@iCounter < 1) THEN
      DELETE FROM Owner WHERE owner_id = old.owner_id;
   END IF;
END; 
$$    

希望它有所帮助。 干杯!