是否可以在检查约束中引用整行?

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 错误:)