2011-11-02 35 views
6

Tôi đang cố gắng sử dụng chức năng currval của PostgreSQL để trả về id hàng được chèn cuối cùng của một bảng có tên là Concept. Concept có khóa chính nối tiếp có tên là cid và có một Chuỗi được tạo tự động được gọi là Concept_cid_seq.currval Chức năng trong PostgreSQL phàn nàn rằng "cột không tồn tại"

tôi cố gắng tuyên bố sau và nhận được một lỗi:

SELECT currval("Concept_cid_seq"); 
ERROR: column "Concept_cid_seq" does not exist 
LINE 1: SELECT currval("Concept_cid_seq"); 
        ^

********** Error ********** 

ERROR: column "Concept_cid_seq" does not exist 
SQL state: 42703 
Character: 16 

Nhưng khi tôi chạy truy vấn:

SELECT * from "Concept_cid_seq"; 

tôi nhận được một bảng với một hàng (như tôi mong đợi) cho thấy các cột như last_value, start_value, v.v ...

Tôi thiếu gì ở đây? Tôi có truyền thông tin sai lệch tới khoản tiền không? Tại sao nó nói 'cột không tồn tại?'

+1

Tài liệu sử dụng dấu nháy đơn, '''' thay vì '" "'. bạn vẫn thấy cùng một lỗi với cả hai kiểu báo giá? – SingleNegationElimination

+3

nó cũng đề cập rằng trường hợp của chuỗi được chuẩn hóa thành chữ thường trừ khi nó có dấu ngoặc kép, vì vậy bạn có lẽ nên có 'currval ('" Concept_cid_seq "')' ... – SingleNegationElimination

+1

@TokenMacGuy Có, tôi đã thử cả hai cách . Nếu tôi sử dụng dấu nháy đơn, nó không giữ nguyên cách viết hoa, do đó, lỗi sẽ trở thành 'LRI: quan hệ" concept_cid_seq "không tồn tại' thay thế. Tôi tự hỏi nếu có một số ý nghĩa cho thực tế là nó gọi nó là một mối quan hệ thay vì một cột trong trường hợp đó ... – Drewmate

Trả lời

5

Nó chỉ ra rằng đây là một vấn đề với viết hoa và báo giá. Bởi vì tôi muốn giữ nguyên cách viết hoa của tên quan hệ tôi cần sử dụng cả hai đơn dấu ngoặc kép kép để chuyển tên quan hệ chính xác sang currval.

Tôi đã thay đổi truy vấn thành SELECT currval('"Concept_cid_seq"'); (lưu ý các dấu nháy đơn bên ngoài) và nó hoạt động chính xác.

Các vấn đề liên quan