Вы здесь

MERGE в POstgreSql, эскиз

Oracle statement:
 
 
 
MERGE INTO acme_obj_value d
USING ( SELECT object_id
        FROM   acme_state_tmp
      ) s
ON (d.object_id = s.object_id)
  WHEN matched THEN
    UPDATE SET d.date_value = LEAST(l_dt, d.date_value)
  WHEN NOT matched THEN
    INSERT (d.id, d.object_id, d.date_value)
    VALUES (acme_param_sequence.NEXTVAL, s.object_id, l_dt)
 
 
PostgreSQL statement:
 
WITH s AS (
     SELECT object_id
     FROM   acme_state_tmp
),
upd AS (
     UPDATE acme_obj_value
     SET    date_value = LEAST(l_dt, d.date_value)
     FROM   s
     WHERE  acme_obj_value.object_id = s.object_id
     RETURNING acme_obj_value.object_id
)
INSERT INTO acme_obj_value(id, object_id,  date_value)
SELECT NEXTVAL(‘acme_param_sequence’), s.object_id, l_dt
FROM   s
WHERE  s.object_id NOT IN (SELECT object_id FROM upd)
 
 

Post new comment

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
1 + 3 =
Решите эту простую математическую задачу и введите результат. Например, для 1+3, введите 4.