您好,登錄后才能下訂單哦!
今天遇到一個奇怪的問題(其實是非常基礎的問題),記錄一下
問題描述:
一個sequence,名字為:SV_INFO_SEQ_id 在PGAdmin中看存在,查詢information_schema.sequences視圖也存在,名字也完全一樣,但是在重置時總提示relation does not exists,重置語句是
select setval('SV_INFO_SEQ_id',1)
排錯過程:
困惑了好久無果,執行 select nextval('SV_INFO_SEQ_id')也是一樣的提示關系不存在。查看建立時SQL才發現問題,建立時使用的是CREATE SEQUENCE "SV_INFO_SEQ_id"……
突然才想到PG是大小寫敏感的,默認情況下會把對象名全部轉成小寫形式存于數據庫中。如果要保持大寫,或大小寫混寫,則必須將對象稱用雙引號引起來,使用時也必須用雙引號。再次執行
select setval('“SV_INFO_SEQ_id”',1) 得到正確的結果。
舉個例子:
create sequence "TEST_SEQ" INCREMENT 1 start 1 minvalue 1 maxvalue 10;
執行后,在數據庫中存儲的是就是大寫的名稱,使用時也名稱也必須用雙引號引起來,比如
SELECT NEXTVAL("TEST_SEQ")
最后結論:
數據庫對象盡量全部使用小寫名稱,不要大寫也不要大小混排,開發時做好開發規范,必免出現問題。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。