2015-06-22 44 views
1

我已經使用了近10年的mysql,但最近跳入了一個項目,第一次向我公開了postgres。大部分的差異都不是什麼問題,但是我一直在遇到一些小問題,這些問題正在讓我失望。我最新的一個只是讓我卡住了。我相信這是一個簡單的解決方法,但我一直無法找到它。我需要更新一組記錄,列名是「查看」 - 這很可能是導致此問題的原因,也是我自己的轉儲故障。但我無法弄清楚如何避開它。需要幫助在postgres查詢中指定潛在的保留字作爲字符串

這裏是我的查詢:

UPDATE rv_template_fields SET view = "display_type_1" 
WHERE rv_template_fields.view = "display_type_2" 

它會導致錯誤:

ERROR: column "display_type_1" does not exist

這顯然跳過去名爲 「視圖」 的欄目。我不知道如何將其指定爲字符串而不是保留字。

+0

你試過單引號? –

回答

1

對於字符串文字,您應該使用單引號而不是雙引號:

UPDATE rv_template_fields SET view = 'display_type_1' WHERE rv_template_fields.view = 'display_type_2' 

雙引號是引用領域和關係的標識一樣,比如視圖,讓你也可以寫:

UPDATE rv_template_fields SET "view" = 'display_type_1' WHERE "view" = 'display_type_2' 
1

它無關view:Postgres裏,雙引號(")就像是在mysql中反引號 - 如果你的代碼"display_type_1",你告訴Postgres的使用標識符display_type_1

使用引號字符串字面量:

UPDATE rv_template_fields SET view = 'display_type_1' 
WHERE rv_template_fields.view = 'display_type_2' 

使用雙引號,當你有一個的保留字,像select * from "join"一個(命名不佳)的標識符,如果你的表名是從字面上join