【问题标题】:Is it possible to reference entire row in check constraint?是否可以在检查约束中引用整行?
【发布时间】:2015-05-19 11:00:00
【问题描述】:
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 约束而不是触发器为整行调用我自己的验证函数 - 可以吗?

【问题讨论】:

  • 你得到什么错误?..

标签: sql postgresql plpgsql postgresql-9.4 database-trigger


【解决方案1】:
CREATE TABLE tbl (
  col1 TEXT,
  col2 INTEGER,
  CHECK ( my_validate_func(row_to_json(tbl.*)))
); 

不会给你 DDL 错误:)

【讨论】:

    【解决方案2】:

    row_to_json(tbl.*),或者只是row_to_json(tbl),应该可以解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-11
      • 2011-09-10
      • 2014-12-12
      • 1970-01-01
      • 2011-05-22
      • 2021-11-11
      • 2021-06-04
      相关资源
      最近更新 更多