假设我创建了以下域:
CREATE DOMAIN MY_STATUS AS VARCHAR NOT NULL DEFAULT 'STATUS0' CHECK(VALUE in ('STATUS1', 'STATUS2', 'STATUS3'));
字符串
正如预期的那样,在类型为MY_STATUS的列中,我只能放入以下值:
- '状态0'
- 'STATUS1'
- 'STATUS2'
- 'STATUS3'
现在,假设我想在向我的DB发送插入或更新之前验证这个列。我需要知道哪些值是允许的,这样,如果我的status = STATUS4,我将在发送插入到DB之前有一个错误,我可以管理它。由于域在将来可能会改变,我需要从DB中选择所有允许的值,而不是硬编码所有可能的值来创建常量。
简而言之:如何进行选择域的所有可能值的查询?在我的例子中,我想有一个查询,它将返回:
'STATUS0', 'STATUS1', 'STATUS2', 'STATUS3'
型
2条答案
按热度按时间xtfmy6hx1#
我建议您使用外键引用,而不是类型或
check
约束。虽然你可以设计一个复杂的查询来解析the约束,但使用外键会更容易:字符串
这具有其他优点:
h22fl7wq2#
检索域的检查约束值列表是可能的。您需要使用正则表达式检查域的文本声明,搜索“值”模式。下面是我的一个函数,它将所有允许的值作为JSON数组列出。
字符串
这是另一个函数,返回一组变量
型