通過SQL設置參數
更新時間 2025-02-05 09:37:19
最近更新時間: 2025-02-05 09:37:19
分享文章
本頁介紹天翼云TeleDB數據庫通過SQL設置參數。
TeleDB提供了三個SQL命令來建立配置默認值。已經提到過的ALTER SYSTEM命令提供了一種改變全局默認值的從SQL可訪問的方法;它在功效上等效于編輯postgresql.conf。此外,還有兩個命令可以針對每個數據庫或者每個角色設置默認值:
- ALTER DATABASE命令允許針對一個數據庫覆蓋其全局設置。
- ALTER ROLE命令允許用用戶指定的值來覆蓋全局設置和數據庫設置。
只有當開始一個新的數據庫會話時,用ALTER DATABASE和 ALTER ROLE設置的值才會被應用。它們會覆蓋從配置文件或服務器命令行獲得的值,并且作為該會話后續的默認值。注意某些設置在服務器啟動后不能被更改,因此不能用這些命令來設置。
一但一個客戶端連接到數據庫,TeleDB會提供兩個額外的SQL命令(以及等效的函數)用以影響會話本地的配置設置:
- SHOW命令允許察看所有參數的當前值。對應的函數是 current_setting(setting_name text)。
- SET命令允許修改對于一個會話可以本地設置的參數的當前值, 它對其他會話沒有影響。對應的函數是 set_config(setting_name, new_value, is_local)。
此外,系統視圖pg_settings可以被用來查看和改變會話本地的值:
- 查詢這個視圖與使用SHOW ALL相似,但是可以提供更多細節。它也更加靈活,因為可以為它指定過濾條件或者把它與其他關系進行連接。
- 在這個視圖上使用UPDATE并且指定更新setting列,其效果等同于發出SET命令。例如,下面的命令
SET configuration_parameter TO DEFAULT;
等效于:
UPDATE pg_settings SET setting = reset_val WHERE name = 'configuration_parameter';