qustionは(しかし長いですが)タイトルです。この手順でPL/Pythonで書かれたbooleanストアドプロシージャを使ったPostgreSQLのCHECK制約では、エラーメッセージの詳細を更新できますか?
-- create the tables for models
CREATE TABLE invoice(
id SERIAL PRIMARY KEY,
value VARCHAR(8)
CONSTRAINT valid_money CHECK(validate_invoice_money(value))
);
:私はこの方法でコードを持って
CREATE OR REPLACE FUNCTION validate_invoice_money(test VARCHAR) RETURNS BOOLEAN AS $$
import plpy
import re
if (re.match("^[0-9]+\\.[0-9]{2}$", test) == None):
return False
return True
$$ LANGUAGE plpython3u IMMUTABLE;
(この例の詳細は重要ではありません、私はこれよりも値を検証するためのより良い方法があります知っている、などMONEY
タイプを使用して)、インサートは、このチェックに失敗したこと
をしようとしているときに、私は次のエラーを取得:。
をERROR : new row for relation "invoice" violates check constraint "valid_model"
DETAIL : Failing row contains (1, "notvalid").
(エラー/詳細記述子は自分のコードですが、PostgreSQLのエラーが提供されるエラーと詳細フィールドを持っています。)
私は、「詳細」を変更するための方法はあります私のPythonの手順からこのエラーの部分?
これは質問、素晴らしい仕事に答えます! –