Как использовать триггер с 3 разными таблицами - PullRequest
0 голосов
/ 27 марта 2019

Уважаемые коллеги из StackOverFlow,

У меня 3 таблицы. bdc (bdc_id, bdc_name, bdc_gc) , stt (stt_id, stt_gc) , bts (bts_id, bts_pmv) .

Я хочу, еслиstt_gc = 'Checked' затем установите bdc_gc = 'Sent' и bts_pmv = 'To do'

Я использую Postgresql 11 и начиная с триггеров / хранимых процедур, которые я пытался проверить с помощью значения if условие stt_gc и сопоставленияс правом bdc_gc bts_pmv в соответствии с их первичным ключом.

create or replace function before_stt_gc() returns trigger
  language plpgsql
as
$$
begin

    if new.stt_gc='Checked' then
      select bdc_gc from bdc
      where new.stt_id = bdc_id;
      doe_gc_bts= 'Sent';
      select bts_pmv from bts
      where new.stt_id = bts_id;
      bts_pmv = 'To do'
    end if;
  end;
$$;

create trigger before_stt_gc_trigger before insert or update on stt
  for each row 
  execute procedure before_stt_gc();

Очевидно, что если я здесь, то это потому, что мой код совершенно неправильный ... Я хочу извлечь из этого уроки, поэтому, если возможно, объясните мне, что я делаю здесь неправильно, или если мой подходне хватает понимания

1 Ответ

1 голос
/ 27 марта 2019

Полагаю, вы ищете update s в выражении IF

if new.stt_gc='Checked' then
  update  bdc  set bdc_gc = 'Sent'
  where new.stt_id = bdc_id;

 UPDATE bts SET bts_pmv = 'To do'
  where new.stt_id = bts_id;

end if;
...