SQL更新
This commit is contained in:
@@ -1,21 +1,10 @@
|
|||||||
-- 修复 signin_logs 外键:删除账号时级联删除签到记录
|
-- 修复 signin_logs 外键
|
||||||
-- 用法: mysql -u weibo -p123456 weibo_hotsign < migrate_fix_signin_logs_fk.sql
|
-- 用法: mysql -u weibo -p123456 weibo_hotsign < migrate_fix_signin_logs_fk.sql
|
||||||
|
|
||||||
-- 先查出旧外键名并删除,再重建
|
-- 1. 清理孤儿记录
|
||||||
SET @fk_name = (
|
DELETE FROM signin_logs WHERE account_id NOT IN (SELECT id FROM accounts);
|
||||||
SELECT CONSTRAINT_NAME FROM information_schema.KEY_COLUMN_USAGE
|
|
||||||
WHERE TABLE_SCHEMA = 'weibo_hotsign'
|
|
||||||
AND TABLE_NAME = 'signin_logs'
|
|
||||||
AND COLUMN_NAME = 'account_id'
|
|
||||||
AND REFERENCED_TABLE_NAME = 'accounts'
|
|
||||||
LIMIT 1
|
|
||||||
);
|
|
||||||
|
|
||||||
SET @sql = CONCAT('ALTER TABLE signin_logs DROP FOREIGN KEY ', @fk_name);
|
|
||||||
PREPARE stmt FROM @sql;
|
|
||||||
EXECUTE stmt;
|
|
||||||
DEALLOCATE PREPARE stmt;
|
|
||||||
|
|
||||||
|
-- 2. 重建外键(带 CASCADE),忽略已存在的情况
|
||||||
ALTER TABLE signin_logs
|
ALTER TABLE signin_logs
|
||||||
ADD CONSTRAINT fk_signin_logs_account
|
ADD CONSTRAINT fk_signin_logs_account
|
||||||
FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE;
|
FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE;
|
||||||
|
|||||||
Reference in New Issue
Block a user