是否可以在检查约束中引用整行?
Is it possible to reference entire row in check constraint?
CREATE OR REPLACE FUNCTION my_validate_func(obj JSON)
RETURNS BOOLEAN AS $$
return true;
$$ LANGUAGE plv8;
CREATE TABLE tbl (col1 TEXT, col2 INTEGER)
CHECK (my_validate_func(row_to_json(*))); -- syntax error :(
我想使用 CHECK
约束而不是触发器为整行调用我自己的验证函数 - 这可能吗?
row_to_json(tbl.*)
,或简单的 row_to_json(tbl)
,应该可以解决问题。
CREATE TABLE tbl (
col1 TEXT,
col2 INTEGER,
CHECK ( my_validate_func(row_to_json(tbl.*)))
);
不会给你 DDL 错误:)
CREATE OR REPLACE FUNCTION my_validate_func(obj JSON)
RETURNS BOOLEAN AS $$
return true;
$$ LANGUAGE plv8;
CREATE TABLE tbl (col1 TEXT, col2 INTEGER)
CHECK (my_validate_func(row_to_json(*))); -- syntax error :(
我想使用 CHECK
约束而不是触发器为整行调用我自己的验证函数 - 这可能吗?
row_to_json(tbl.*)
,或简单的 row_to_json(tbl)
,应该可以解决问题。
CREATE TABLE tbl (
col1 TEXT,
col2 INTEGER,
CHECK ( my_validate_func(row_to_json(tbl.*)))
);
不会给你 DDL 错误:)