Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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 - Fatal编程技术网

Php 删除表中的一行时,如何删除所有相关的表记录?

Php 删除表中的一行时,如何删除所有相关的表记录?,php,mysql,Php,Mysql,我有一个删除客户的按钮。如果删除了客户,则仅从客户表中删除该客户。但是我在表中有客户的记录,比如付款(添加了所有付款记录)和评论(添加了所有用户评论) 我在所有表中都将客户id作为外键。但它的字段名不同。例如,在customer_details表中,我将customer id命名为id,在其他表中,我将其作为lead_id 我应该编写什么样的查询来从所有三个(客户、评论、付款)表中删除客户的记录?您应该使用外键的cascade属性 比如说 FOREIGN KEY (customer_id) R

我有一个删除客户的按钮。如果删除了客户,则仅从客户表中删除该客户。但是我在表中有客户的记录,比如付款(添加了所有付款记录)和评论(添加了所有用户评论)

我在所有表中都将客户id作为外键。但它的字段名不同。例如,在customer_details表中,我将customer id命名为id,在其他表中,我将其作为lead_id


我应该编写什么样的查询来从所有三个(客户、评论、付款)表中删除客户的记录?

您应该使用外键的cascade属性

比如说

 FOREIGN KEY (customer_id) REFERENCES customer(id)
                      ON DELETE CASCADE

最好先从其他表中删除,然后再从客户表中删除。但您可以一次从所有表中删除,使用类似以下内容的查询:

DELETE FROM tbl_name1 , tbl_name2 ... USING table_references [WHERE where_condition] 删除 从tbl_名称1,tbl_名称2。。。 使用表u引用 [何处条件]
希望能有所帮助

mysql中是否有方法查询“系统”模式,并使用该模式找出哪个键CasCasCasdes链接到底层基表。基本上是“逆向工程”,使用所有级联必须存在的系统信息?我曾经用Oracle做过类似的事情。@Michael Durrant,我的想法和你在这里的评论以及你对我的评论完全一样,哈哈。给你:@Michaeldurrent是的,对于每个链接到主表的表,你应该在删除级联选项上给出这个选项。我如何将它用作查询?你能解释一下lostmohican吗?@Bala.C你不必在查询中使用它,例如,如果你在person表中有person id,并将其与注释表一起引用,在注释表的定义中,你将一列声明为外键,在DELETE CASCADE中,当你从person表中删除person时,此人的评论将自动删除。我希望这是对你的回答:)