Enforce natural key uniqueness by adding unique constraints to Bundesland, Platz, Altersklasse, and Land tables.

This commit is contained in:
2026-03-28 20:52:58 +01:00
parent 74df3514ae
commit 9ec8535ff7
3 changed files with 51 additions and 0 deletions
@@ -0,0 +1,46 @@
-- Enforce natural key uniqueness for master-data upserts
-- Bundesland: unique (land_id, kuerzel) for non-null kuerzel values
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'ux_bundesland_land_kuerzel'
) THEN
CREATE UNIQUE INDEX ux_bundesland_land_kuerzel
ON bundesland(land_id, kuerzel)
WHERE kuerzel IS NOT NULL;
END IF;
END$$;
-- Platz: unique (turnier_id, name)
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'ux_platz_turnier_name'
) THEN
CREATE UNIQUE INDEX ux_platz_turnier_name
ON platz(turnier_id, name);
END IF;
END$$;
-- Altersklasse: unique (altersklasse_code) ensure index exists
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'altersklasse_altersklasse_code_unique'
) THEN
CREATE UNIQUE INDEX altersklasse_altersklasse_code_unique
ON altersklasse(altersklasse_code);
END IF;
END$$;
-- Land: unique (iso_alpha3_code) ensure index exists
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'land_iso_alpha3_code_unique'
) THEN
CREATE UNIQUE INDEX land_iso_alpha3_code_unique
ON land(iso_alpha3_code);
END IF;
END$$;