Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Bỏ qua INSERT IGNORE để hiển thị lỗi khi chèn trùng lặp trong MySQL

Mặc định MySQL cho phép chèn trùng lặp (chỉ warning) nếu không có ràng buộc UNIQUE/PRIMARY KEY. Thêm UNIQUE INDEX để buộc báo lỗi khi trùng.

Tạo bảng và thêm UNIQUE INDEX

mysql> CREATE TABLE DemoTable(FirstName VARCHAR(100)); 
Query OK, 0 rows affected (0.58 sec)

mysql> ALTER TABLE DemoTable ADD UNIQUE INDEX(FirstName); 
Query OK, 0 rows affected (0.50 sec)

Chèn dữ liệu - lỗi khi trùng

mysql> INSERT INTO DemoTable VALUES('Chris'); 
Query OK, 1 row affected (0.32 sec)
mysql> INSERT INTO DemoTable VALUES('Robert'); 
Query OK, 1 row affected (0.09 sec)
mysql> INSERT INTO DemoTable VALUES('David'); 
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable VALUES('Robert'); 
ERROR 1062 (23000): Duplicate entry 'Robert' for key 'FirstName'
mysql> INSERT INTO DemoTable VALUES('Chris'); 
ERROR 1062 (23000): Duplicate entry 'Chris' for key 'FirstName'
mysql> INSERT INTO DemoTable VALUES('Sam'); 
Query OK, 1 row affected (0.12 sec)

Kết quả (4 hàng duy nhất):

+-----------+
| FirstName |
+-----------+
| Chris     |
| David     |
| Robert    |
| Sam       |
+-----------+

Tóm tắt hành vi:

Cú phápCó UNIQUE KEYKhông UNIQUE KEY
INSERTLỗi 1062 nếu trùngChèn thành công (cho phép trùng)
INSERT IGNOREBỏ qua, không lỗi, không chènChèn thành công
INSERT ... ON DUPLICATE KEY UPDATECập nhật nếu trùngChèn mới