问题在(尽管很长)标题中。我有这种方式的代码:
-- 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 程序中更改此错误的“详细信息”部分吗?