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;
|