我有两个表链接在一起,如下所示:
Owner table | owner_id = Primary Key
Car table | car_id = Primary Key | owner_id = Foreign Key基本上,每次添加新的汽车记录时,都会将其分配给车主。一个车主可以拥有多辆车,但每辆车只能属于一个车主。
有没有可能设置一个约束或某种东西,从最后一个“匹配”记录上的所有者表中删除所有者。
例如,owner_1拥有5辆汽车。在他们拥有的最后一辆车被删除后,它还会从数据库中删除车主记录。
发布于 2018-04-05 07:19:52
我认为after delete触发器可以完成这项工作。每次删除汽车记录时,都应该查询相同的汽车表,以查看是否存在与要删除的汽车具有相同车主的另一辆汽车。如下所示:
编辑:修复选择查询: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;
$$ 希望能有所帮助。干杯!
https://stackoverflow.com/questions/49661580
复制相似问题