alter table EMP drop constraint FK_DEPTNO;
再删除dept的主键约束:
alter table DEPT drop constraint PK_DEPT;
这样就能插入重复数据了。
如果你 SQL 里面, 没有给 外键起名字, 那么数据库会 自动使用一个 算法, 来产生一个 唯一的名字
下面这个 SQL 用于在 Oracle 里面, 查询 所有的 外键信息。
你可以 通过 子表名 , 去查询, 那个 自动生成的 外键名字, 是什么。
然后就可以删除了。
SELECT
USER_CONS_COLUMNSCONSTRAINT_NAME AS 约束名,
USER_CONS_COLUMNSTABLE_NAME AS 子表名,
USER_CONS_COLUMNSCOLUMN_NAME AS 子表列名,
USER_CONS_COLUMNSPOSITION AS 位置,
USER_INDEXESTABLE_NAME AS 主表名,
USER_IND_COLUMNSCOLUMN_NAME AS 主表列名
FROM
USER_CONSTRAINTS
JOIN USER_CONS_COLUMNS
ON (USER_CONSTRAINTSCONSTRAINT_NAME
= USER_CONS_COLUMNSCONSTRAINT_NAME)
JOIN USER_INDEXES
ON (USER_CONSTRAINTSR_CONSTRAINT_NAME
= USER_INDEXESINDEX_NAME)
JOIN USER_IND_COLUMNS
ON (USER_INDEXESINDEX_NAME = USER_IND_COLUMNSINDEX_NAME)
WHERE
CONSTRAINT_TYPE = 'R';
至于如何 删除 外键 , 语法是
ALTER TABLE 表名 DROP CONSTRAINT 外键约束名字;
至于
用指定内容为什么不好用呢?
这个因为 Oracle 的 语法不支持你这么做
因此你没法这么干
我不是很专业 ,不过也能做出来,,先把表删除了再建一次就成了,先删除表 employee ,再删除表dept, OK,如果楼主用的oralce 11g 的话,里面自带sqldeveloper 用起来很方便,,删外键也相当方便,如果是11g 以下的版本的话,可以下一个sqldeveloper 照样用,,,打完收工添加约束语句格式:\x0d\alter table 表名 add constraint 主键约束名 primary key(主键列名表序列);\x0d\如:\x0d\alter table 修课表 add constraint pk_xh_kc primary key(学号,课程号);\x0d\\x0d\删除约束语句格式:\x0d\alter table 表名 drop CONSTRAINT 主键约束名;\x0d\如:\x0d\alter table 修课表 drop CONSTRAINT pk_xh_kc;欢迎分享,转载请注明来源:内存溢出
评论列表(0条)