23 lines
1.0 KiB
PL/PgSQL
23 lines
1.0 KiB
PL/PgSQL
BEGIN;
|
|
SET LOCAL lock_timeout = '10s';
|
|
SELECT pg_advisory_xact_lock(290926,170004);
|
|
DO $guard$
|
|
BEGIN
|
|
IF EXISTS(SELECT 1 FROM mne.compatibility_controls WHERE enabled)
|
|
OR EXISTS(SELECT 1 FROM mne.identity_links)
|
|
OR EXISTS(SELECT 1 FROM mne.sector_links)
|
|
OR EXISTS(SELECT 1 FROM mne.business_links)
|
|
OR EXISTS(SELECT 1 FROM mne.compatibility_rejections)
|
|
OR EXISTS(SELECT 1 FROM mne.compatibility_checkpoints)
|
|
OR EXISTS(SELECT 1 FROM mne.parties WHERE party_type='person') THEN
|
|
RAISE EXCEPTION 'Compatibility evidence or dependencies exist; archive and reconcile before DOWN';
|
|
END IF;
|
|
END $guard$;
|
|
DROP TABLE mne.compatibility_controls,mne.compatibility_rejections,mne.compatibility_checkpoints,
|
|
mne.business_links,mne.sector_links,mne.identity_links;
|
|
ALTER TABLE mne.parties DROP CONSTRAINT ck_parties_identity_links;
|
|
ALTER TABLE mne.parties ADD CONSTRAINT parties_check CHECK
|
|
((party_type='organization' AND organization_id IS NOT NULL AND user_id IS NULL)
|
|
OR (party_type='person' AND user_id IS NOT NULL AND organization_id IS NULL));
|
|
COMMIT;
|