Enforce natural key uniqueness by adding unique constraints to Bundesland, Platz, Altersklasse, and Land tables.
This commit is contained in:
+46
@@ -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$$;
|
||||
Reference in New Issue
Block a user