我有以下查询:
create or replace function test_function()
returns trigger as $body$
begin
if (tg_table_name = 'mytable' and tg_op='insert') then
INSERT into another_table(id, name) values(new.id, new.name);
return new;
else if (tg_table_name = 'mytable' and tg_op='update') then
INSERT into another_table(id, name) values(new.id, new.name);
return new;
end if;
return null;
end;
$body$ language plpsql;
编辑: 我需要做一个:
update table mytable set name = 'test';
EDIT2:这不起作用,value2并未更新为null;
BEGIN
IF (TG_OP = 'INSERT' AND TG_TABLE_NAME='tableA') THEN
INSERT INTO tableB(
columnA,
columnB)
VALUES(
new.value1,
new.value2);
new.value2 := null;
RETURN NEW;
ELSEIF (TG_OP = 'UPDATE' AND
TG_TABLE_NAME='tableA') THEN
INSERT INTO tableB(
columnA,
columnB)
VALUES(
new.value1,
new.value2);
new.value2 := null;
RETURN NEW;
END IF;
RETURN null;
END;
编辑:4
create trigger add_notif_trigger after insert or update on
mytable for each row when (new.name > 100) execute
procedure function test_function();
我需要对这两种情况进行更新。我不知道该怎么做。
问候,
答案 0 :(得分:1)
如果要修改基表的列值,则不需要其他更新,只需分配NEW.column_name
if
..
NEW.name := 'test';
else if
..
NEW.name := 'test';
答案 1 :(得分:0)
如果然后 如果new.value = true然后 END IF;
END IF;
要小心, 当您使用update(TG_OP ='UPDATE')时,您具有新旧值,而在插入过程中,您只有新值