ข้อควรระวังในการใช้ ENUM ของ MySQL

ช่วงนี้มีปัญหากับเจ้า ENUM ตลอดเลย TT^TT เกี่ยวกับการ insert ล้วนๆ ครับ ปัญหามีอยู่ว่าระบบที่มีอยู่แล้วมีการใช้ datatype ENUM ซึ่งเก็บค่า ‘0’,’1′,’2′,’3′,’4′ และผมก็มีการปรับปรุงเพิ่มเติมคือ มีค่าที่ต้องการจะเก็บเข้าไปเพิ่ม ค่าที่เพิ่มเข้าไปก็คือ ‘5’,’6′ แต่ก่อนที่จะปรับปรุงไม่ได้เข้าไปดูชนิดข้อมูลที่เก็บ (นี่ก็เป็นความไม่ละเอียดของตัวผมเองนี่แหละ ^^ ) พอไม่ได้เช็คแล้วไป insert ค่าที่เป็น ‘5’ หรือ ‘6’ มันก็เก็บเป็น ‘4’ ให้ตลอด กว่าจะรู้ก็ตอนที่จะลองแก้ค่าตรงๆ ที่ฐานข้อมูลเลย เข้าไปดูปุ๊บ อ้าวเฮ้ย ENUM นี่หว่า เรียบร้อยเจ็บนิดๆ 

กรณีต่อมาเจ้า ” ‘ ” (single quote) ถึงมันจะเล็กนิดเดียวแต่กับชนิดข้อมูลที่เป็น ENUM แล้ว มันอาจจะส่งผมถึงการจัดเก็บข้อมูลที่ผิดพลาดเลยทีเดียวนะครับ ทำไมน่ะเหรอ ก็เพราะว่า ถ้าเราไม่ครอบด้วย ” ‘ ” (single quote) มันจะมองว่าเราใช้ index (ตำแหน่งของข้อมูล) ซึ่งในกรณีของผมถ้าผมจะเก็บค่า ‘5’ แต่ไม่ครอบด้วย single quote ข้อมูลที่ MySQL เก็บจะเป็นค่า ‘4’ นะครับ ทำให้ข้อมูลที่เราเก็บและจะเอาไปใช้ภายหลังผิดครับ