Một chút thông tin cơ bản cho những ai quan tâm đến một số vấn đề phức tạp mà tôi đã giải quyết trên SQL Fiddle:
Về cơ bản, tôi đang cố gắng đảm bảo rằng các cầu dao luôn ở trạng thái nhất quán, ngay cả khi mọi người chơi với chúng. Một điều tôi lo lắng là mọi người cố tình làm xáo trộn cơ sở dữ liệu, phá vỡ chúng cho những người khác có thể đang làm việc với chúng (điều này đã xảy ra trước đây, nhưng không thường xuyên xảy ra).
Tôi đã tìm thấy các phương pháp giữ mọi thứ sạch sẽ cho từng nền tảng cơ sở dữ liệu, nhưng thú vị là mỗi phương pháp lại hoàn toàn khác nhau đối với mỗi nền tảng. Thật không may, đối với MySQL, tôi đã phải dùng đến tùy chọn tồi tệ nhất - chỉ cho phép CHỌN ở phía bên phải. Điều này là do có quá nhiều cách để viết các truy vấn bao gồm các cam kết ngầm và không có cách nào mà tôi đã tìm ra để ngăn điều đó xảy ra trong trường hợp bị từ chối hoàn toàn ở phía truy vấn. Điều này khá đáng tiếc, tôi nhận ra, nhưng nó có vẻ là bắt buộc.
Nhưng dù sao, lỗi cụ thể này là kết quả của một thay đổi mà tôi đã thực hiện gần đây trong logic cho MySQL. Nó đã được khắc phục ngay bây giờ và bây giờ báo cáo thông báo lỗi mong đợi: