我必须编写一个触发器来确保表account
的{{1}}列中的唯一条目:
accounts
我试着像这样编写我的触发器:
create table accounts (id serial, account int4 default 0);
或者:
create function x_6 () returns trigger as '
begin
IF row(new.account) is distinct from row(OLD.account) THEN
return NEW;
ELSE
raise notice '' Entries are not unique! '';
END IF;
end;
'
language 'plpgsql';
然后
create function x_6 () returns trigger as '
begin
IF (new.account <> OLD.account) THEN
return NEW;
ELSE
raise notice '' Entries are not unique ! '';
END IF;
end;
'
language 'plpgsql';
当我尝试插入某些内容时:
create trigger x_6t before insert on accounts for each row execute procedure x_6();
在任何一种情况下我都会收到错误:
insert into accounts(account) values (20);
我该如何解决?
答案 0 :(得分:2)
这绝对是错误的方式。您不应该为此目的使用触发器,您应该使用唯一索引。
CREATE TABLE foo(a int PRIMARY KEY, b int);
-- column b has only unique values
CREATE UNIQUE INDEX ON foo(b);
您的代码有多个问题: