Khi có sự thay đổi trong dữ liệu của một bảng trong PostgreSQL, chúng ta sử dụng câu lệnh SQL UPDATE để cập nhật thông tin của bảng đó.
Cú pháp lệnh SQL UPDATE trong PostgreSQL
[ WITH [ RECURSIVE ] with_query [, ...] ] UPDATE [ ONLY ] table_name [ * ] [ [ AS ] alias ] SET { column_name = { expression | DEFAULT } | ( column_name [, ...] ) = [ ROW ] ( { expression | DEFAULT } [, ...] ) | ( column_name [, ...] ) = ( sub-SELECT ) } [, ...] [ FROM from_list ] [ WHERE condition | WHERE CURRENT OF cursor_name ] [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]
Update dữ liệu của 1 hoặc nhiều dòng (row) trong bảng
Khi thực hiện cập nhật dữ liệu của 1 hoặc nhiều dòng trong 1 bảng, chúng ta nên sử dụng kèm mệnh đề điều kiện WHERE
Ví dụ bảng groups có dữ liệu như sau:
Giờ sửa group_name của bản ghi có group_id = 2 từ “admin” => “other”
UPDATE groups SET group_name = 'other' WHERE group_id = 2;
Update dữ liệu của toàn bộ dòng (row) trong bảng
Nếu muốn update toàn bộ dữ liệu trong bảng thì chúng ta không cần sử dụng mệnh đề điều kiện WHERE
Ví dụ: Cập nhật cột (column) của bảng groups là ngày tháng hiện tại
UPDATE groups SET updated_at = current_timestamp;
Update dữ liệu và trả lại giá trị mới nhất của dữ liệu
Để xác nhận lại dữ liệu đã cập nhật, chúng ta sử dụng từ khóa RETURNING
Ví dụ xác nhận lại giá trị của update_at và deleted_at sau khi chỉnh sửa dữ liệu của bản ghi có group_id = 2
UPDATE groups SET updated_at = current_timestamp, deleted_at = current_timestamp WHERE group_id = 2;