หากคุณต้องการ "ออกก่อน" สำหรับสถานการณ์ที่ไม่มีข้อผิดพลาดให้ใช้คำตอบที่ยอมรับซึ่งโพสต์โดย @piotrm อย่างไรก็ตามโดยทั่วไปแล้วคุณจะได้รับการประกันตัวเนื่องจากเงื่อนไขข้อผิดพลาด (โดยเฉพาะในขั้นตอน SQL)
ใน MySQL v5.5 คุณสามารถทิ้งข้อยกเว้นได้ ตัวจัดการข้อยกเว้น ฯลฯ ซึ่งจะได้ผลลัพธ์เช่นเดียวกัน แต่ในลักษณะที่สะอาดกว่าและรุนแรงกว่า
วิธีการมีดังนี้
DECLARE CUSTOM_EXCEPTION CONDITION FOR SQLSTATE '45000';
IF <Some Error Condition> THEN
SIGNAL CUSTOM_EXCEPTION
SET MESSAGE_TEXT = 'Your Custom Error Message';
END IF;
หมายเหตุSQLSTATE '45000'
เท่ากับ "เงื่อนไขข้อยกเว้นที่ผู้ใช้กำหนดเองที่ไม่สามารถจัดการได้" ตามค่าเริ่มต้นสิ่งนี้จะสร้างรหัสข้อผิดพลาด1644
(ซึ่งมีความหมายเหมือนกัน) โปรดทราบว่าคุณสามารถส่งรหัสเงื่อนไขหรือรหัสข้อผิดพลาดอื่น ๆ ได้หากต้องการ (รวมถึงรายละเอียดเพิ่มเติมสำหรับการจัดการข้อยกเว้น)
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้โปรดดู:
https://dev.mysql.com/doc/refman/5.5/en/signal.html
วิธีเพิ่มข้อผิดพลาดภายในฟังก์ชัน MySQL
http://www.databasejournal.com/features/mysql/mysql-error-handling-using-the-signal-and-resignal-statements.html
ภาคผนวก
เมื่อฉันอ่านโพสต์นี้ของฉันอีกครั้งฉันก็รู้ว่าฉันมีอะไรเพิ่มเติมที่จะเพิ่ม ก่อนหน้า MySQL v5.5 มีวิธีเลียนแบบการโยนข้อยกเว้น มันไม่เหมือนกันทุกประการ แต่นี่คืออะนาล็อก: สร้างข้อผิดพลาดผ่านการเรียกโพรซีเดอร์ที่ไม่มีอยู่จริง เรียกขั้นตอนด้วยชื่อที่มีความหมายเพื่อให้ได้วิธีการที่เป็นประโยชน์ในการพิจารณาว่าปัญหาคืออะไร เมื่อเกิดข้อผิดพลาดคุณจะเห็นบรรทัดของความล้มเหลว (ขึ้นอยู่กับบริบทการดำเนินการของคุณ)
ตัวอย่างเช่น:
CALL AttemptedToInsertSomethingInvalid;
โปรดทราบว่าเมื่อคุณสร้างโพรซีเดอร์จะไม่มีการตรวจสอบความถูกต้องในสิ่งดังกล่าว ดังนั้นในบางสิ่งเช่นภาษาคอมไพล์คุณไม่สามารถเรียกใช้ฟังก์ชันที่ไม่มีอยู่ในสคริปต์เช่นนี้มันจะล้มเหลวในรันไทม์ซึ่งเป็นสิ่งที่ต้องการในกรณีนี้!
IF tablename IS NOT NULL THEN
... ;)