Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ป้องกันไม่ให้มีการแทรกรายการรวมกันสองครั้งใน MySQL หรือไม่


เพื่อป้องกันไม่ให้มีการแทรกรายการรวมกันสองครั้ง ให้แก้ไขตารางและตั้งค่า UNIQUE สำหรับคอลัมน์ตามที่แสดงในไวยากรณ์ด้านล่าง -

แก้ไขตาราง yourTableName เพิ่มข้อจำกัด yourConstraintName ไม่ซ้ำกัน (yourColumnName1,yourColumnName2,....N);

ให้เราสร้างตารางก่อน -

mysql> สร้างตาราง DemoTable ( Value1 int, Value2 int) แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.47 วินาที)

นี่คือข้อความค้นหาเพื่อป้องกันไม่ให้มีการแทรกรายการรวมกันสองครั้ง -

mysql> แก้ไขตาราง DemoTable เพิ่มข้อ จำกัด Value1_Value2_ConstraintKey เฉพาะ (Value1,Value2); แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.80 วินาที) บันทึก:0 รายการซ้ำ:0 คำเตือน:0

แทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก ที่นี่เมื่อเราพยายามแทรกชุดค่าผสมที่ซ้ำกัน จะมองเห็นข้อผิดพลาด "รายการซ้ำ" และการแทรกที่ซ้ำกันจะไม่ทำงาน -

mysql> แทรกลงในค่า DemoTable (10,10); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.11 วินาที) mysql> แทรกลงในค่า DemoTable (10,20); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.11 วินาที) mysql> แทรก ลงในค่า DemoTable (10,10);ข้อผิดพลาด 1062 (23000) :รายการซ้ำ '10-10' สำหรับคีย์ 'Value1_Value2_ConstraintKey'mysql> แทรกลงในค่า DemoTable (20,10); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.18 วินาที) mysql> แทรกลงในค่า DemoTable (20,20); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.23 วินาที) mysql> แทรกลงในค่า DemoTable (20,10); ข้อผิดพลาด 1062 (23000) :รายการซ้ำ '20-10' สำหรับคีย์ 'Value1_Value2_ConstraintKey '

แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select -

mysql> เลือก *จาก DemoTable;

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+---------+-------+| Value1 | ค่าที่ 2 |+---------+-------+| 10 | 10 || 10 | 20 || 20 | 10 || 20 | 20 |+--------+-------+4 แถวในชุด (0.00 วินาที)