首页/数据/SQL 速查/DROP TABLE 前的安全检查
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条函数速查60 条
变更与事务52 条
性能与执行计划72 条

DROP TABLE 前的安全检查

删表不可逆:执行前确认外键引用、依赖对象与备份;PostgreSQL 的 CASCADE 会连视图一起删,MySQL 遇外键引用会拒绝。

SQL 速查数据更新于 2026-10-12

先查引用

先查引用
-- MySQL:查引用该表的外键
SELECT table_name, constraint_name
FROM information_schema.KEY_COLUMN_USAGE
WHERE referenced_table_name = 'orders';

-- PostgreSQL:查依赖对象
SELECT dependent_ns.nspname AS schema, dependent_view.relname AS view
FROM pg_depend
JOIN pg_rewrite ON pg_depend.objid = pg_rewrite.oid
JOIN pg_class AS dependent_view ON pg_rewrite.ev_class = dependent_view.oid
WHERE pg_depend.refobjid = 'orders'::regclass;
MySQL存在外键引用时 DROP 直接失败(除非 FOREIGN_KEY_CHECKS=0,此时会留下悬空引用风险)
PostgreSQL默认 RESTRICT 拒绝删除;CASCADE 静默删除依赖对象
兜底确认最近备份可用,或先用 RENAME 改名观察,再择期删除

易错点

  • PostgreSQL 用 DROP TABLE ... CASCADE 图省事:依赖视图/约束被一起删除,且难以快速恢复
  • 删表前只看了应用代码没看数据库依赖(视图、物化视图、外键),会删出连锁故障

数据来源与参考

  • MySQL 8.0 Reference Manual · DROP TABLE
  • PostgreSQL Documentation · DROP TABLE
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌