1
我有两个表accounts
和projects
:Postgres的更新插入之前,新的变量在触发器
create table accounts (
id bigserial primary key,
slug text unique
);
create table projects (
id bigserial primary key,
account_id bigint not null references accounts (id),
name text
);
我希望能够插入新行projects
通过指定唯一account.slug
(不account.id
)。我想要实现的是一样的东西:
INSERT into projects (account_slug, name) values ('account_slug', 'project_name');
我想过使用触发器(遗憾的是它不工作):
create or replace function trigger_projects_insert() returns trigger as $$
begin
if TG_OP = 'INSERT' AND NEW.account_slug then
select id as account_id
from accounts as account
where account.slug = NEW.account_slug;
NEW.account_id = account_id;
-- we should also remove NEW.account_slug but don't know how
end if;
return NEW;
end;
$$ LANGUAGE plpgsql;
create trigger trigger_projects_insert before insert on projects
for each row execute procedure trigger_projects_insert();
什么是要做到我的最好办法米试图做什么?
触发是一个好主意吗? 有没有其他解决方案?
感谢您的回复,我使用https://postgrest.com/en/v0.4/,不知道您是否熟悉它,即使您的解决方案正确,也不会真正起作用使用postgrest,这就是为什么我想使用触发器。 – julesbou
我想说,如果不能正确使用数据库,应该使用不同的东西,但它可能不适用于您的选择。我会添加一个不同的想法,也许这将有所帮助。 –