如何防止表的字段中出现重复值

其中一种方法是编写 on_apply 事件处理程序。

在下面的示例中,delta 参数是一个数据集,包含将要存储到 users 表中的更改。

我们遍历所有记录的更改,如果该记录没有被删除,或者 login 字段发生了更改, 则查找表中是否存在相同登录名的记录,如果存在则抛出异常。 如果用户在客户端使用编辑表单编辑记录,则无法保存该记录,并会看到相应的提示信息。

def on_apply(item, delta, params, connection):
    for d in delta:
        if not (d.rec_deleted() or d.rec_modified() and d.login.value == d.login.old_value):
            users = d.task.users.copy(handlers=False)
            users.set_where(login=d.login.value)
            users.open(fields=['login'])
            if users.rec_count:
                raise Exception('There is a user with this login - %s' % d.login.value)