Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 仅在所有行不存在时删除关系行_Php_Mysql_Foreign Keys - Fatal编程技术网

Php 仅在所有行不存在时删除关系行

Php 仅在所有行不存在时删除关系行,php,mysql,foreign-keys,Php,Mysql,Foreign Keys,我正在使用外键尝试检查当用户删除表格图库图库id0时,是否不存在任何行图库id=0,然后删除表格文章库 我知道它可以使用php检查,如果没有行存在,然后删除,但不知道有没有其他方法可以 做得更聪明吗? 我尝试了外键,但它应该不起作用,它会删除表文章库中的行如果删除表库中的任何库id=0,即使它还有另一行库id=0 CONSTRAINT `article_gallery_ibfk_2` FOREIGN KEY (`gallery_id`) REFERENCES `gallery` (`galler

我正在使用外键尝试检查当用户删除表格
图库
图库id
0
时,是否不存在任何行
图库id=0
,然后删除表格
文章库

我知道它可以使用php检查,如果没有行存在,然后删除,但不知道有没有其他方法可以 做得更聪明吗?
我尝试了外键,但它应该不起作用,它会删除表
文章库中的行
如果删除表
库中的任何
库id=0
,即使它还有另一行
库id=0

CONSTRAINT `article_gallery_ibfk_2` FOREIGN KEY (`gallery_id`) REFERENCES `gallery` (`gallery_id`) ON DELETE CASCADE
表格:文章库

id | article_id | gallery_id  
---------------------------------------------------------
0    0            0  
1    1            0  
2    2            1  
表格:图库

id | gallery_id  
---------------------------------------------------------------------
0    0  
1    0  
2    0  
3    1  
使用触发器:

DELIMITER //
CREATE TRIGGER delete_gallery AFTER DELETE ON gallery
    FOR EACH ROW BEGIN
        DELETE FROM article_gallery AS a
        WHERE a.gallery_id = OLD.gallery_id
          AND NOT EXISTS (SELECT * 
                          FROM gallery AS g
                          WHERE g.gallery_id = OLD.gallery_id);
    END
//
DELIMITER ;

谢谢回复!如果比较这一点或在php中执行这一点,建议您使用哪一种方法如果在php中执行,则必须在从表中删除行的每个脚本中执行。如果你在一个触发器中做,你只需要在一个地方做它。我觉得谷歌应该把性能放在PHP中更好吗?你经常删除行吗?如果不是,那么性能可能并不重要。谢谢您的帮助!!