Files
junhong_cmp_fiber/scripts/migration/正式删除线上的SQL.md
Break e56649e5be
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 53s
还有例子
2026-06-12 18:10:37 +08:00

107 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
BEGIN;
CREATE TEMP TABLE tmp_del_device AS
SELECT id, virtual_no
FROM tb_device
WHERE virtual_no = '862639071883120'
AND deleted_at IS NULL;
CREATE TEMP TABLE tmp_del_cards AS
SELECT id, iccid
FROM tb_iot_card
WHERE iccid IN (
'89860885192590574651',
'89860625750010463442',
'8986112520903882441'
)
AND deleted_at IS NULL;
CREATE TEMP TABLE tmp_del_device_auth AS
SELECT id
FROM tb_enterprise_device_authorization
WHERE device_id IN (SELECT id FROM tmp_del_device)
AND deleted_at IS NULL;
-- 设备授权
UPDATE tb_enterprise_device_authorization
SET deleted_at = NOW(),
revoked_at = COALESCE(revoked_at, NOW()),
updated_at = NOW()
WHERE id IN (SELECT id FROM tmp_del_device_auth);
-- 卡授权:这里字段是 card_id不是 iot_card_id
UPDATE tb_enterprise_card_authorization
SET deleted_at = NOW(),
revoked_at = COALESCE(revoked_at, NOW()),
updated_at = NOW()
WHERE deleted_at IS NULL
AND (
card_id IN (SELECT id FROM tmp_del_cards)
OR device_auth_id IN (SELECT id FROM tmp_del_device_auth)
);
-- 分配记录:按 asset_type 限定,避免不同表 ID 相同误删
UPDATE tb_asset_allocation_record
SET deleted_at = NOW(),
updated_at = NOW()
WHERE deleted_at IS NULL
AND (
(asset_type = 'device' AND asset_id IN (SELECT id FROM tmp_del_device))
OR (asset_type = 'iot_card' AND asset_id IN (SELECT id FROM tmp_del_cards))
OR asset_identifier IN (
'862639071883120',
'89860885192590574651',
'89860625750010463442',
'8986112520903882441'
)
);
-- 设备绑卡关系
UPDATE tb_device_sim_binding
SET deleted_at = NOW(),
bind_status = 2,
unbind_time = COALESCE(unbind_time, NOW()),
updated_at = NOW()
WHERE deleted_at IS NULL
AND (
device_id IN (SELECT id FROM tmp_del_device)
OR iot_card_id IN (SELECT id FROM tmp_del_cards)
);
-- 资产钱包:字段是 resource_type/resource_id
UPDATE tb_asset_wallet
SET deleted_at = NOW(),
updated_at = NOW()
WHERE deleted_at IS NULL
AND (
(resource_type = 'device' AND resource_id IN (SELECT id FROM tmp_del_device))
OR (resource_type = 'iot_card' AND resource_id IN (SELECT id FROM tmp_del_cards))
);
-- 释放全局唯一标识;这个表没有 deleted_at物理删
DELETE FROM tb_asset_identifier
WHERE identifier IN (
'862639071883120',
'89860885192590574651',
'89860625750010463442',
'8986112520903882441'
)
OR (asset_type = 'device' AND asset_id IN (SELECT id FROM tmp_del_device))
OR (asset_type = 'iot_card' AND asset_id IN (SELECT id FROM tmp_del_cards));
-- 删除卡
UPDATE tb_iot_card
SET deleted_at = NOW(),
updated_at = NOW()
WHERE id IN (SELECT id FROM tmp_del_cards)
AND deleted_at IS NULL;
-- 删除设备
UPDATE tb_device
SET deleted_at = NOW(),
updated_at = NOW()
WHERE id IN (SELECT id FROM tmp_del_device)
AND deleted_at IS NULL;
COMMIT;