0

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

我希望能够确定 bookings 表(或任何其他表)中的任何条目是否引用了这个 course_type_id,以便我可以优雅地通知用户。即当他们尝试删除记录时不会引发 mysql 错误。

我会为此使用什么样的查询?

谢谢。

4

2 回答 2

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

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

另一种方法是只运行查询、捕获错误、检查其类型并在出现约束错误时显示通知。执行此操作的方法取决于您使用什么来访问 MySQL。

于 2010-04-04T15:49:35.447 回答
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())来通知用户删除是否成功。

于 2010-04-04T16:30:33.707 回答