• : +86 02388256629

Mezznine CMS删除垃圾数据

Mezznine CMS删除垃圾数据

方法 1️⃣:用子查询代替 CTE

把 CTE 改成 子查询,每条 DELETE 都单独写:

-- 1. 删除 ThreadedComment 扩展表 DELETE FROM public.generic_threadedcomment WHERE comment_ptr_id IN ( SELECT id FROM public.django_comments WHERE comment ILIKE '%http://%' OR comment ILIKE '%https://%' OR comment ILIKE '%viagra%' OR comment ILIKE '%casino%' ); -- 2. 删除评论标记表 DELETE FROM public.django_comment_flags WHERE comment_id IN ( SELECT id FROM public.django_comments WHERE comment ILIKE '%http://%' OR comment ILIKE '%https://%' OR comment ILIKE '%viagra%' OR comment ILIKE '%casino%' ); -- 3. 删除主评论表 DELETE FROM public.django_comments WHERE comment ILIKE '%http://%' OR comment ILIKE '%https://%' OR comment ILIKE '%viagra%' OR comment ILIKE '%casino%';

✅ 特点:

  • 每条 DELETE 独立执行,避免了 CTE 作用域问题。

  • 按顺序删除,保证外键安全。


方法 2️⃣:使用临时表(如果垃圾评论非常多)

-- 创建临时表存垃圾评论 ID CREATE TEMP TABLE temp_spam_comments AS SELECT id FROM public.django_comments WHERE comment ILIKE '%http://%' OR comment ILIKE '%https://%' OR comment ILIKE '%viagra%' OR comment ILIKE '%casino%'; -- 删除 ThreadedComment 扩展表 DELETE FROM public.generic_threadedcomment WHERE comment_ptr_id IN (SELECT id FROM temp_spam_comments); -- 删除评论标记表 DELETE FROM public.django_comment_flags WHERE comment_id IN (SELECT id FROM temp_spam_comments); -- 删除主评论表 DELETE FROM public.django_comments WHERE id IN (SELECT id FROM temp_spam_comments); -- 删除临时表 DROP TABLE temp_spam_comments;

✅ 优点:适合 大批量垃圾评论,只计算一次 ID 列表。

Comments

Comments

There are currently no comments

New Comment

Write Your Comments