從其他關聯式資料庫,換到 PostgreSQL 時,可能會有欄位名稱恰恰用到了保留字。
以下是列出表留字的方式,跟處理方式,作一個紀錄。
查找 Keyword 清單,可以用下列指令達成:
select * from pg_get_keywprds();
至於處理的方式,最好就是避免使用~
但是在舊資料庫移轉到 EDB 的企業版時,總會遇到部份用字在原先系統並非保留字,到了 PGSQL 卻列在保留字之內。也不便避開使用這些的時候,還可以用 as 明確標明這是欄位名稱,或可以用雙引號框住。見以下範例:
edb=# -- 不是保留字的狀況
edb=# select 'hello world' mydata;
mydata
-------------
hello world
(1 row)
edb=# -- 保留字的情形
edb=# select 'hello world' data;
ERROR: syntax error at or near "data"
LINE 1: select 'hello world' data;
edb=# -- 排除1
edb=# select 'hello world' as data;
data
-------------
hello world
(1 row)
edb=# -- 排除2
edb=# select 'hello workd' "data";
data
-------------
hello workd
(1 row)
edb=#
平常還是避免在程式碼中使用通常英文單字來當成變數名稱,應該就比較不會遇到這種問題了~~
參考資料
沒有留言:
張貼留言