You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

74 lines
1.3 KiB

return: text
lang: plpgsql
src: |
DECLARE result TEXT;
BEGIN
-- Table des ages à créer
DROP TABLE IF EXISTS w_tmp;
CREATE TEMP TABLE w_tmp AS
SELECT
t_ages.oid,
t_ages.code,
t_ages.texte
FROM base.t_ages
ORDER BY code;
-- Remise bon oid (en deux étapes pour éviter clés en double)
UPDATE
activite.t_ages_c
SET
oid = 0 - w_tmp.oid
FROM
w_tmp
WHERE
t_ages_c.code = w_tmp.code
AND (
t_ages_c.oid <> w_tmp.oid
);
UPDATE
activite.t_ages_c
SET
oid = w_tmp.oid
FROM
w_tmp
WHERE
t_ages_c.code = w_tmp.code
AND (
t_ages_c.oid <> w_tmp.oid
);
-- Mise à jour codes selon base
UPDATE
activite.t_ages_c
SET
code = w_tmp.code,
texte = w_tmp.texte
FROM
w_tmp
WHERE
t_ages_c.oid = w_tmp.oid
AND (
t_ages_c.code IS DISTINCT FROM w_tmp.code
OR t_ages_c.texte IS DISTINCT FROM w_tmp.texte
);
-- Ajout nouveaux codes
INSERT INTO activite.t_ages_c (
oid,
code,
texte
)
SELECT w_tmp.oid,
w_tmp.code,
w_tmp.texte
FROM w_tmp
WHERE w_tmp.oid NOT IN (
SELECT oid
FROM activite.t_ages_c
)
ORDER BY w_tmp.code;
RETURN 'OK';
END;