bmc_hub/migrations/200_internet_ip_unique.sql

32 lines
919 B
MySQL
Raw Permalink Normal View History

WITH ranked AS (
SELECT
id,
ip_address,
ROW_NUMBER() OVER (
PARTITION BY ip_address
ORDER BY
CASE WHEN deleted_at IS NULL THEN 0 ELSE 1 END,
id
) AS row_no
FROM internet_connections_ip_addresses
),
duplicates AS (
SELECT id
FROM ranked
WHERE row_no > 1
)
UPDATE internet_connections_ip_addresses ipa
SET deleted_at = CURRENT_TIMESTAMP,
updated_at = CURRENT_TIMESTAMP,
comment = CONCAT(
COALESCE(ipa.comment, ''),
CASE WHEN COALESCE(ipa.comment, '') = '' THEN '' ELSE E'\n' END,
'Automatisk deaktiveret som dublet-IP før unikregel.'
)
WHERE ipa.id IN (SELECT id FROM duplicates)
AND ipa.deleted_at IS NULL;
CREATE UNIQUE INDEX IF NOT EXISTS uq_internet_connections_ip_addresses_ip_address_active
ON internet_connections_ip_addresses (ip_address)
WHERE deleted_at IS NULL;