删除约束的操作,其实不难,关键是知道怎么查名、怎么删、删完会不会牵连其他表。Oracle 里搞这事儿,还挺讲究。像DROP CONSTRAINT
和平时删字段、删表不太一样,得先搞清楚约束名,才好动手。
EMPLOYEES 表里删经理外键,直接上ALTER TABLE employees DROP CONSTRAINT emp_manager_fk;
,干脆利落。如果是 PRIMARY KEY 那种,还得带个CASCADE
,像这样:
ALTER TABLE departments DROP PRIMARY KEY CASCADE;
不带CASCADE
还真不行,相关联的外键会报错。这里有个小技巧,查约束名的时候,用USER_CONSTRAINTS
和USER_CONS_COLUMNS
,不容易搞错。
如果你还不太熟FOREIGN KEY
、PRIMARY KEY
这些,可以看看下面几个资源,讲得还挺细:
- Understanding FOREIGN KEY Constraints in Oracle Database
- PRIMARY KEY Constraint in Oracle A Comprehensive Guide
- 修改表结构-SQL ALTER TABLE 命令
操作前最好先确认好有没有其他地方依赖这些约束,是生产环境,删错了就麻烦了。嗯,用CASCADE
时一定要慎重。