Vui lòng không làm điều này - trước tiên hãy xem xét các lựa chọn thay thế, bắt đầu với phân vùng và loại trừ ràng buộc .
Nếu bạn phải sử dụng tên bảng động, hãy làm điều đó ở cấp ứng dụng trong quá trình tạo truy vấn.
Nếu vẫn thất bại, bạn có thể sử dụng quy trình PL / PgSQL như:
CREATE OR REPLACE pleasedont(int year) RETURNS TABLE basetable AS $$
BEGIN
RETURN QUERY EXECUTE format('SELECT col1, col2, col3 FROM %I', 'basetable_'||year);
END;
$$ LANGUAGE plpgsql;
Điều này sẽ chỉ hoạt động nếu bạn có một bảng cơ sở có cùng cấu trúc với các bảng con. Nó cũng thực sự khó khăn khi bạn bắt đầu thêm các từ định tính (nơi ràng buộc mệnh đề, v.v.) và nó ngăn cản bất kỳ loại bộ nhớ đệm kế hoạch hoặc sử dụng câu lệnh đã chuẩn bị hiệu quả nào.