MySQL - 查找引用指定索引的条目

时间:2010-04-04 15:46:27

标签: sql mysql foreign-key-relationship

所以我有一个预订系统,我有一个'lesson_type'表,其中'lesson_type_id'为PK。我在这里有一个约束,所以如果有针对该lesson_type的预订,我就无法删除一个lesson_type。

我希望能够确定预订表(或任何其他表格)中的任何条目是否引用此lesson_type_id,以便我可以优雅地通知用户。即,当他们尝试删除记录时,不会抛出mysql错误。

我会使用什么样的查询?

感谢。

2 个答案:

答案 0 :(得分:1)

SELECT COUNT(*) FROM bookings WHERE lesson_type_id = ?your_id LIMIT 1

如果没有引用,则结果为0;如果有引用,则结果为1。对任何其他表重复此操作。

另一种方法是只运行查询,捕获错误,检查其类型并显示通知,如果它是约束错误。这样做的方法取决于您使用什么来访问MySQL。

答案 1 :(得分:0)

delete bookings from 
FROM bookings inner join
(
  select lesson_type_id, count(*) as c
  from bookings group by lesson_type_id
) bookings_count
on bookings.lesson_type_id = bookings_count.lesson_type_id
WHERE bookings.lesson_type_id = ? and bookings_count.c > 0

这样你可以一步完成删除和检查。然后,您可以选择之后直接删除的记录(或使用生成的rowcount())通知用户删除是否成功。