Postgresql
如何在 RAISE 語句中使用 COLUMN 和 TABLE 選項
根據文件,RAISE 有稱為 TABLE 和 COLUMN 的選項。但是,如果我明確設置它們,它們最終不會出現在生成的錯誤消息中。錯誤消息中似乎只使用了 DETAIL 和 HINT。你怎樣才能讓其他選項出現?例如:
RAISE EXCEPTION 'invalid_parameter' USING DETAIL = FORMAT('The specified user "%s" was not found.', _usr), HINT = 'Enter the username of an existing user.', COLUMN = 'username', TABLE = 'accounts';
發出錯誤消息:
... ERROR: invalid_parameter ... DETAIL: The specified user "aanders" was not found. ... HINT: Enter the username of an existing user. ... CONTEXT: PL/pgSQL function _api.find_user(text) line 24 at RAISE ... PL/pgSQL function _api.accounts_update_trigger() line 97 at assignment ... STATEMENT: ... WITH pg_source AS (...
沒有顯示“表”或“列”。
更新
我需要的關鍵術語是“VERBOSITY”——一旦我搜尋到重複的問題,例如https://stackoverflow.com/q/41959752/1571426 (不確定不同論壇上的問題是否使這個“重複”或不是。)
這取決於客戶端的詳細程度。使用 psql 時,發出
\set VERBOSITY verbose
在呼叫該語句之前會導致錯誤消息包括:
TABLE NAME: accounts COLUMN NAME: username
在最新版本的 psql 中,也可以在
\errverbose
事後發出以詳細形式重新格式化最後一個錯誤消息。