您好,我正在尝试创建一个触发器,在对某一行上的某列插入后,trgigger将该值添加到另一张表中的某处。我有一个名为updates的表:
create table public.updates (
id serial not null,
matricula varchar(10) NOT NULL,
primensalidade int,
segmensalidade int,
tercmensalidade int,
quamensalidade int,
quimensalidade int,
sexmensalidade int,
foreign key (id) references creditos(id));我有一张表,叫做:
CREATE TABLE public.creditos (
id serial NOT NULL,
veiculo varchar(10) NOT NULL,
matricula varchar(10) NOT NULL,
nome bpchar(30) NOT NULL,
telemovel varchar(10) NOT NULL,
valordevendapronto int4 NOT NULL,
juros int4 NULL,
valortotal int4 NULL,
entradainicial int4 NOT NULL,
primensalidade int4 NULL,
segmensalidade int4 NULL,
tercmensalidade int4 NULL,
quamensalidade int4 NULL,
quimensalidade int4 NULL,
sexmensalidade int4 NULL,
datainicial date NULL DEFAULT now(),
datafinal date NULL,
pago bpchar(3) NULL,
CONSTRAINT creditos_pkey PRIMARY KEY (id));我的目标是在updates.primensalidade上插入后,它转到creditos.primensalidade,并将其更改为我之前在updates.primensalidade上选择的内容,其中我的creditos.matricula和updates.matricula是相同的。到目前为止,我所做的是:
CREATE OR REPLACE function creditoupdate()
RETURNS trigger
LANGUAGE plpgsql
AS $function$
begin
insert into creditos(primensalidade) values(new.primensalidade) where matricula = new.matricula ;
return new;
end;
$function$
;
create trigger creditoupdatetrigger after
insert
on
updates for each row execute function creditoupdate();我希望你能帮助我。
发布于 2020-09-13 13:03:40
在INSERT中不能这样使用WHERE。
要更新表creditos中的primensalidade列,可以使用以下命令:
UPDATE creditos SET primensalidade = new.primensalidade where matricula = new.matricula;
有关UPDATE - https://www.postgresql.org/docs/current/sql-update.html的更多信息
有关INSERT - https://www.postgresql.org/docs/current/sql-insert.html的更多信息
https://stackoverflow.com/questions/63866780
复制相似问题