展开全部
如果你 SQL 里面, 没有给 外键起名字, 那么数据库会 自动使用一个62616964757a686964616fe58685e5aeb931333264656133 算法, 来产生一个 唯一的名字
下面这个 SQL 用于在 Oracle 里面, 查询 所有的 外键信息。
你可以 通过 子表名 , 去查询, 那个 自动生成的 外键名字, 是什么。
然后就可以删除了。
SELECT
USER_CONS_COLUMNS.CONSTRAINT_NAME AS 约束名,
USER_CONS_COLUMNS.TABLE_NAME AS 子表名,
USER_CONS_COLUMNS.COLUMN_NAME AS 子表列名,
USER_CONS_COLUMNS.POSITION AS 位置,
USER_INDEXES.TABLE_NAME AS 主表名,
USER_IND_COLUMNS.COLUMN_NAME AS 主表列名
FROM
USER_CONSTRAINTS
JOIN USER_CONS_COLUMNS
ON (USER_CONSTRAINTS.CONSTRAINT_NAME
= USER_CONS_COLUMNS.CONSTRAINT_NAME)
JOIN USER_INDEXES
ON (USER_CONSTRAINTS.R_CONSTRAINT_NAME
= USER_INDEXES.INDEX_NAME)
JOIN USER_IND_COLUMNS
ON (USER_INDEXES.INDEX_NAME = USER_IND_COLUMNS.INDEX_NAME)
WHERE
CONSTRAINT_TYPE = 'R';
至于如何 删除 外键 , 语法是
ALTER TABLE 表名 DROP CONSTRAINT 外键约束名字;
至于
用指定内容为什么不好用呢?
这个因为 Oracle 的 语法不支持你这么做
因此你没法这么干.