检查特定表中的给定记录是否被另一个表使用?

时间:2013-09-05 14:25:25

标签: php mysql

使用PHP,当我要从表中删除一行时,我希望能够确定它的PK值是否被任何其他表使用

我有一张表,其中PK可能是一个或几个表中的FK。第一手,我不知道有多少表是相关的。

什么是实现我正在寻找的最有效和最短的方式?

我的第一个方法是获取与哪些表相关的内容,例如:

select table_name, column_name from information_schema.key_column_usage where 
  table_schema = 'my_schema' and referenced_table_name = 'my_table' and 
  referenced_column_name = 'id_field'

然后循环遍历该列表,并为每个表执行以下操作:

select count(*) as total from table_name_from_loop where id_field = my_value

因此,如果我count()中的任何一个大于0,那么该行正在使用中。

有关如何执行此任务的任何建议?我更喜欢某种检查,而不是试图删除并发现一些错误

编辑201309091540:任何人?

0 个答案:

没有答案