Tags:

Giảm thiểu lỗi trong SQL khi Insert data với mệnh đềINSERT IGNORE

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

https://www.geeksforgeeks.org/sql-insert-ignore-statement/

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x