lsFusion:对属性 NULL 的唯一性限制

问题描述 投票:0回答:1

你能告诉我如何为属性添加唯一性限制,以便只能输入一个 NULL 值吗? 在这种情况下,该限制不适用于 id 的 NULL 值。 检查最新版本 4.2 和 5.0.

这是文档中的示例代码:

CLASS Book 'Book; id 'Number' = DATA INTEGER (Book); book 'Book' (INTEGER i) = GROUP AGGR Book b BY id(b);

unique open-source lsfusion
1个回答
0
投票

对于任何一种 GROUP 运算符,如果 BY 子句的至少一个值是 NULL,则结果始终为 NULL。因此,GROUP operator AGGR 创建的标准限制不会考虑空 id 值。

在这种情况下要检查多个 NULL 值,您必须单独创建一个 CONSTRAINT :

CONSTRAINT (GROUP SUM 1 IF b IS Book AND NOT id(b)) > 1
    MESSAGE 'Multiple empty values are not allowed';
© www.soinside.com 2019 - 2024. All rights reserved.