34 lines
1.1 KiB
SQL
34 lines
1.1 KiB
SQL
ALTER TABLE "customers" ADD COLUMN IF NOT EXISTS "memberrelation" bigint;
|
|
|
|
DO $$
|
|
BEGIN
|
|
IF NOT EXISTS (
|
|
SELECT 1
|
|
FROM pg_constraint
|
|
WHERE conname = 'customers_memberrelation_memberrelations_id_fk'
|
|
) THEN
|
|
ALTER TABLE "customers"
|
|
ADD CONSTRAINT "customers_memberrelation_memberrelations_id_fk"
|
|
FOREIGN KEY ("memberrelation")
|
|
REFERENCES "public"."memberrelations"("id")
|
|
ON DELETE no action
|
|
ON UPDATE no action;
|
|
END IF;
|
|
END $$;
|
|
|
|
UPDATE "customers"
|
|
SET "memberrelation" = ("infoData"->>'memberrelation')::bigint
|
|
WHERE
|
|
"memberrelation" IS NULL
|
|
AND "type" = 'Mitglied'
|
|
AND jsonb_typeof(COALESCE("infoData", '{}'::jsonb)) = 'object'
|
|
AND COALESCE("infoData", '{}'::jsonb) ? 'memberrelation'
|
|
AND ("infoData"->>'memberrelation') ~ '^[0-9]+$';
|
|
|
|
UPDATE "customers"
|
|
SET "infoData" = COALESCE("infoData", '{}'::jsonb) - 'memberrelation'
|
|
WHERE
|
|
"type" = 'Mitglied'
|
|
AND jsonb_typeof(COALESCE("infoData", '{}'::jsonb)) = 'object'
|
|
AND COALESCE("infoData", '{}'::jsonb) ? 'memberrelation';
|