Как обновить массовые записи в одной таблице, найдя значение столбца в другой таблице с помощью хранимых процедур? - PullRequest
0 голосов
/ 22 октября 2019

У меня есть две таблицы, а именно loan_details и loan_mapping . Мне нужно установить mod_id таблицы loan_mapping значением, которое присутствует в таблице loan_details . Таким образом, это массовое обновление записей (20 тыс. Записей) таблицы «loan_mapping», только если столбец loan_number таблицы «loan_mapping» присутствует в записях таблицы loan_detail. (Я имею в виду, что если поиск выполнен успешно с помощью loan_number)

Ниже приведены определения двух таблиц:

CREATE TABLE public.loan_details 
(
  loan_number   bigint NOT NULL,
  crp_lob       integer,
  mod_id        integer,
  CONSTRAINT loan_details_pkey PRIMARY KEY (loan_number)
);

CREATE TABLE public.loan_mapping 
(
  loan_number           bigint NOT NULL,
  spoc_id               integer NOT NULL,
  assigned_datetime     timestamp without time zone,
  loan_spoc_map_id      integer NOT NULL DEFAULT nextval ('lsa_loan_spoc_mapping_loan_spoc_map_id_seq'::regclass),
  line_of_business_id   integer,
  mod_id                integer,
  CONSTRAINT loan_spoc_mapping_pk PRIMARY KEY (loan_spoc_map_id),
  CONSTRAINT fk_loan_spoc_loan_number FOREIGN KEY (loan_number) 
    REFERENCES public.loan_details (loan_number)
);

Итак, мне нужна точная хранимая процедура для выполнения необходимых обновлений, как указано вмоя обобщенная проблема.

1 Ответ

0 голосов
/ 22 октября 2019

Я не вижу никакой причины для хранимой процедуры здесь:

update loan_mapping lm
  set mod_id = ld.mod_id
from loan_details ld  
where ld.loan_number = lm.loan_number;
...