gpt4 book ai didi

sql - Oracle:如何在表中的 USER_TABLES.TABLE_NAME 上添加外键

转载 作者:行者123 更新时间:2023-12-04 16:00:21 25 4
gpt4 key购买 nike

我正在创建一个表,我需要在 USER_TABLES.TABLE_NAME 上添加一个外键约束。

我不太确定该怎么做?

我尝试了以下代码行:

CONSTRAINT FK_USR_TBLS FOREIGN KEY (TABLE_NAME) REFERENCES USER_TABLES(TABLE_NAME)

但是当我尝试创建表时出现以下错误:

ORA-00904: "TABLE_NAME": invalid identifier

最佳答案

user_tables 是 Oracle 数据字典中的一个 View 。这里有两个复杂性。

我们不能在没有主键的对象上构建外键。因为 user_tables 是数据字典的一部分并由 Oracle 管理,我们不能以任何方式、形状或形式更改它,而不会使支持失效。

但这无关紧要,因为我们无法对 View 实现约束。当然,我们可以构建主键,但它们必须声明为 DISABLE NOVALIDATE。这意味着我们不能在表的外键中引用约束。

您有一个稍微奇怪的要求,但是如果您想构建一个表来强制与数据字典建立关系,您可以使用物化 View 来实现。像这样的:

create materialized view my_tables
as
select table_name from user_tables
/

alter materialized view my_tables
add constraint my_tables_uk unique (table_name)
/

create table t42 (id number, table_name varchar2(30))
/

alter table t42
add constraint t42_tname_fk foreign key (table_name)
references my_tables(table_name)
/

关于sql - Oracle:如何在表中的 USER_TABLES.TABLE_NAME 上添加外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52023518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com