INSERT ON DUPLICATE KEY UPDATE làm gì trong MySQL?

Insert On Duplicate Key Update Lam Gi Trong Mysql



Trong khi làm việc với cơ sở dữ liệu MySQL, đôi khi người dùng có thể gặp phải lỗi vi phạm khóa trùng lặp khi cố gắng chèn bản ghi mới vào bảng. Lỗi này xảy ra khi một hàng có cùng khóa chính hoặc khóa duy nhất đã tồn tại. Tuy nhiên, vấn đề này có thể được giải quyết bằng cách cập nhật các bản ghi hiện có với các giá trị mới. Trong những trường hợp như vậy, kích hoạt “ CHÈN VÀO BẢN CẬP NHẬT KHÓA DUPLICATE ” sẽ giải quyết vấn đề này một cách hiệu quả.

Bài đăng này sẽ giải thích “CHÈN TRÊN CẬP NHẬT KHÓA DUPLICATE” là gì và nó hoạt động như thế nào trong MySQL.







INSERT ON DUPLICATE KEY UPDATE làm gì trong MySQL?

Trong MySQL, CHÈN VÀO BẢN CẬP NHẬT KHÓA DUPLICATE là một tính năng nâng cao của câu lệnh INSERT kết hợp hai chức năng vào một thao tác đơn lẻ. Chẳng hạn, nó sẽ chèn một bản ghi vào một bảng cụ thể nếu bản ghi đã cho chưa tồn tại. Tuy nhiên, nếu bản ghi mong muốn đã tồn tại, thì nó sẽ cập nhật bản ghi hiện có với giá trị mới.



Để kích hoạt tính năng INSERT ON DUPLICATE KEY UPDATE, người dùng phải thực hiện theo cú pháp dưới đây:



CHÈN VÀO [ tên_bảng ] ( [ cột_1 ] , [ cột_2 ] , ... )
GIÁ TRỊ ( [ val_1 ] , [ val_2 ] , ... )
TRÊN CẬP NHẬT KHÓA DUPLICATE [ cột_1 ] = [ val_1 ] , [ cột_2 ] = [ val_2 ] ,…;





Chỉ định tên bảng, tên cột và giá trị bạn chọn thay cho tên_bảng, col_1, col_2, … và val_1, val_2, …, v.v.

Ví dụ: Cách sử dụng tính năng INSERT ON DUPLICATE KEY UPDATE trong MySQL?



Đầu tiên, kết nối với cơ sở dữ liệu MySQL với các đặc quyền phù hợp, sau đó thực hiện lệnh bên dưới để lấy dữ liệu của bảng “linuxhint_author”:

LỰA CHỌN * TỪ linuxhint_author;

Lệnh select truy xuất tất cả các bản ghi của bảng “linuxhint_author”:

Bây giờ hãy chạy lệnh SQL sau để chèn hoặc cập nhật một bản ghi cụ thể trong bảng ‘linuxhint_author’, với tính năng “ON DUPLICATE KEY UPDATE” được bật:

CHÈN VÀO linuxhint_author ( nhận dạng , tên, tuổi, tác giảRank, email )
GIÁ TRỊ ( 6 , 'Alex Johnson' , 29 , 3 , 'alex@example.com' )
TRÊN CẬP NHẬT KHÓA DUPLICATE
tên = GIÁ TRỊ ( tên ) ,
tuổi = GIÁ TRỊ ( tuổi ) ,
Xếp hạng tác giả = GIÁ TRỊ ( tác giảxếp hạng ) ,
email = GIÁ TRỊ ( e-mail ) ;

Vì bản ghi được chỉ định chưa tồn tại trong bảng ‘linuxhint_author’ nên nó sẽ được chèn thành công vào bảng đã chọn:

Hãy chèn một bản ghi trùng lặp và xem “ TRÊN CẬP NHẬT KHÓA DUPLICATE ” tính năng hoạt động trong MySQL:

CHÈN VÀO linuxhint_author ( nhận dạng , tên, tuổi, tác giảRank, email )
GIÁ TRỊ ( 3 , 'Michael Johnson' , 28 , 4 , 'michael@example.com' )
TRÊN CẬP NHẬT KHÓA DUPLICATE
tên = GIÁ TRỊ ( tên ) ,
tuổi = GIÁ TRỊ ( tuổi ) ,
Xếp hạng tác giả = GIÁ TRỊ ( tác giảxếp hạng ) ,
email = GIÁ TRỊ ( e-mail ) ;

Từ đoạn mã dưới đây, có thể thấy rõ rằng bản ghi đã tồn tại được cập nhật thành công với các giá trị mới:

Tính năng “INSERT ON DUPLICATE KEY” cũng có thể được áp dụng cho một cột cụ thể thay vì toàn bộ bản ghi:

CHÈN VÀO linuxhint_author ( nhận dạng , xếp hạng tác giả )
GIÁ TRỊ ( 3 , 2 )
TRÊN BẢN CẬP NHẬT KHÓA DUPLICATE authorRank = VALUES ( tác giảxếp hạng ) ;

Trong đoạn mã trên, “authorRank” của tác giả có ID “3” đang được cập nhật thành giá trị mới “2”:

Đây là cách hoạt động của tính năng “INSERT ON DUPLICATE KEY UPDATE” trong MySQL.

Phần kết luận

Trong MySQL, CHÈN VÀO BẢN CẬP NHẬT KHÓA DUPLICATE là một tính năng nâng cao cho phép chúng tôi kết hợp chức năng chèn một hàng mới và cập nhật/sửa đổi một hàng đã tồn tại trong một thao tác. Tính năng này giúp người dùng tránh lỗi 'vi phạm khóa trùng lặp' khi cố gắng chèn một hàng mới vào một bảng cụ thể. Bài đăng này đã giải thích “INSERT ON DUPLICATE KEY UPDATE” là gì và nó hoạt động như thế nào trong MySQL.