因此,我有一個預訂系統,其中有一個'lesson_type_id'表,其中'lesson_type_id'爲PK。我在這裏有一個約束,所以如果爲那個lesson_type預訂了,我不能刪除一個lesson_type。MySQL - 查找指向指定索引的條目
我希望能夠確定這個lesson_type_id是否被預訂表(或任何其他表中的任何條目)引用,因此我可以優雅地通知用戶。即當他們嘗試並刪除記錄時,不會引發mysql錯誤。
我會用什麼樣的查詢呢?
謝謝。
因此,我有一個預訂系統,其中有一個'lesson_type_id'表,其中'lesson_type_id'爲PK。我在這裏有一個約束,所以如果爲那個lesson_type預訂了,我不能刪除一個lesson_type。MySQL - 查找指向指定索引的條目
我希望能夠確定這個lesson_type_id是否被預訂表(或任何其他表中的任何條目)引用,因此我可以優雅地通知用戶。即當他們嘗試並刪除記錄時,不會引發mysql錯誤。
我會用什麼樣的查詢呢?
謝謝。
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())來通知用戶刪除是否成功。
SELECT COUNT(*) FROM bookings WHERE lesson_type_id = ?your_id LIMIT 1
如果沒有引用,結果爲0,如果有的話結果爲1。對其他表格重複此操作。
另一種方法是隻運行查詢,捕獲錯誤,檢查其類型並在出現約束錯誤時顯示通知。做到這一點的方式取決於你使用什麼來訪問MySQL。