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);
我有一个 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);