PostgreSQL - 检查两个属性中的相等值

PostgreSQL - Check for equal values in two attributes

我有一个 PostgreSQL 11.6 服务器。在这台服务器上,我有一个数据库 table users 和属性 id_user, id_manager, displayName, givenName, surname, active。我想以某种方式检查是否插入或更新了 id_user 和 id_manager 不相等的行。

我创建了一个触发器:

create trigger "Test"
    before insert or update
        of id_user, id_manager
    on users
    for each row
execute procedure "Test"();

和触发函数:

create function "Test"() returns trigger
    language plpgsql
as
$func$
BEGIN
  IF (SELECT id_user FROM users)
   = (SELECT id_manager FROM users) 
  THEN
    RAISE EXCEPTION 'User ID and Manager ID cannot be the same values!';
  END IF;
  RETURN NEW;
END
$func$;

alter function "Test"() owner to xxxxxx;

当我执行 insert where id_user 和 id_manager 具有相同的值时,插入完成且没有错误。

有人可以帮忙吗?

谢谢

使用检查约束:

ALTER TABLE users ADD CHECK (user_id <> manager_id);