2010-04-04 35 views
0

因此,我有一個預訂系統,其中有一個'lesson_type_id'表,其中'lesson_type_id'爲PK。我在這裏有一個約束,所以如果爲那個lesson_type預訂了,我不能刪除一個lesson_type。MySQL - 查找指向指定索引的條目

我希望能夠確定這個lesson_type_id是否被預訂表(或任何其他表中的任何條目)引用,因此我可以優雅地通知用戶。即當他們嘗試並刪除記錄時,不會引發mysql錯誤。

我會用什麼樣的查詢呢?

謝謝。

回答

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())來通知用戶刪除是否成功。

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

如果沒有引用,結果爲0,如果有的話結果爲1。對其他表格重複此操作。

另一種方法是隻運行查詢,捕獲錯誤,檢查其類型並在出現約束錯誤時顯示通知。做到這一點的方式取決於你使用什麼來訪問MySQL。