32 lines
919 B
MySQL
32 lines
919 B
MySQL
|
|
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;
|