Gần đây tôi đã gặp phải một sự kỳ quặc. Sau đây là SQL hợp lệ:output_expression cho "DELETE FROM table" làm gì?
DELETE FROM customer *;
Các tài liệu cho PostgreSQL DELETE nói ngôi sao là một giá trị có thể cho output_expression
:
Một biểu thức cần tính toán và trả về bởi lệnh DELETE sau mỗi hàng bị xóa. Biểu thức có thể sử dụng bất kỳ tên cột nào của bảng hoặc bảng được liệt kê trong SỬ DỤNG. Viết * để trả về tất cả các cột.
Tôi đã thử nó có và không có dấu sao và không thể thấy sự khác biệt. Trong thực tế, tôi có thể đặt bất kỳ từ đơn nào sau tên bảng và nó được chấp nhận. Nó thậm chí không phải là một tên cột thực tế. Không có gì thêm được trả lại.
db=> DELETE FROM customer wheeeeeee;
DELETE 19
Vậy tôi làm gì và tôi có thể sử dụng nó để làm gì?
Câu hỏi also posted on the PostgreSQL mailing list.
Tại sao không thử và tìm hiểu? –
Tôi đã làm. Nó chỉ xóa các hàng và trả về không có gì đặc biệt. –
Có vẻ như bạn đã bỏ lỡ 'RETURNING', một phần không bắt buộc của ngữ pháp trước' output_expression' tôi giả sử rằng '*' chỉ được coi là một bí danh (như cho 'wheeeeeee') mà không có nó. –