Tôi có cơ sở dữ liệu PostgreSQL 9 sử dụng các số nguyên tăng dần tự động làm khóa chính. Tôi muốn sao chép một số hàng trong bảng (dựa trên một số tiêu chí lọc), trong khi thay đổi một hoặc hai giá trị, tức là sao chép tất cả các giá trị cột, ngoại trừ ID (được tạo tự động) và có thể là một cột khác. Tuy nhiên, tôi cũng muốn lấy ánh xạ từ ID cũ đến ID mới. Có cách nào tốt hơn để làm điều đó sau đó chỉ cần truy vấn cho các hàng để sao chép đầu tiên và sau đó chèn các hàng mới một tại một thời điểm?Sao chép một số hàng một cách hiệu quả trong bảng PostgreSQL
Về cơ bản tôi muốn làm một cái gì đó như thế này:
INSERT INTO my_table (col1, col2, col3)
SELECT col1, 'new col2 value', col3
FROM my_table old
WHERE old.some_criteria = 'something'
RETURNING old.id, id;
Tuy nhiên, điều này không thành công với ERROR: missing FROM-clause entry for table "old"
và tôi có thể thấy lý do tại sao: Postgres phải làm SELECT đầu tiên và sau đó chèn nó và RETURNING
khoản chỉ có quyền truy cập vào hàng mới được chèn vào.
Bạn có xảy ra để có ý tưởng làm thế nào để làm truy vấn của bạn w/o gọi tên tất cả các thuộc tính tôi muốn sao chép? Tôi có bảng khá lớn (với rất nhiều thuộc tính) và gõ tất cả chúng và không quên một là một nỗi đau ... –
lý do tại sao hai câu hỏi về cùng một điều? http://stackoverflow.com/questions/29256888/insert-into-from-select-returning-id-mappings – murison