Chúng ta đều biết rằng khóa chính trong một bảng không thể lặp lại, lấy ví dụ bảng Student có mssv(mã số sinh viên) là khóa chính, mỗi Student nên có một mssv duy nhất. Khi chúng ta thêm một Student có mssv trùng với một Student đã tồn tại trước đó thì SQL sẽ trả về lỗi. Để giảm thiểu lỗi này xảy ra, chúng ta có thể sử dụng mệnh đề INSERT IGNORE.
Những trường hợp có thể sử dụng INSERT IGNORE:
- Khi thêm một khóa chính trùng lặp với khóa chính trước đó hay một Unique constraint.
- Thêm dữ liệu null vào cột không được phép null.
- Khi chèn một hàng vào một bảng được phân vùng trong đó các giá trị được chèn đi ngược lại với định dạng phân vùng.
Ví dụ cho bảng Employee với khóa chính là EMPLOYEEID
EMPLOYEEID | NAME | CITY |
---|---|---|
15001 | Aakash | Delhi |
15003 | Sahil | Bangalore |
15010 | John | Hyderabad |
15008 | Shelley | Delhi |
15002 | Ananya | Mumbai |
15004 | Sia | Pune |
Như chúng ta có thể nhận thấy, các mục nhập không được sắp xếp dựa trên khóa chính của chúng, tức là EmployeeID
INSERT IGNORE INTO Employee (EmployeeID, Name, City) VALUES (15002, 'Ram', 'Mumbai');
Kết quả sẽ không có dòng dữ liệu nào được thêm vào bảng Employee vì đã tồn tại một dòng có khóa chính là 15002.
Khi thêm nhiều dòng dữ liệu cùng một lúc thì chỉ những dòng nào vi phạm nguyên tắc trên sẽ bị loại bỏ, những dòng dữ liệu khác sẽ được thêm vào bình thường.
INSERT IGNORE INTO Employee (EmployeeID, Name, City) VALUES (15007, 'Shikha', 'Delhi'), (15002, 'Ram', 'Mumbai'), (15009, 'Sam', 'Ahmedabad');
Kết quả chúng ta sẽ có thêm 2 Employee được thêm vào có EmployeeID 15007 và 15009 vì chúng chưa tồn tại trong bảng Employee trước đó.
Nguồn tham khảo