gpt4 book ai didi

oracle - 在创建表语句中内联创建外键索引的语法

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

我想创建一个表bar,其中包含由命名索引支持的命名外键约束。我想通过 create table DDL 语句中的内联定义来做到这一点。当查看Oracle 19 SQL Language Reference时看来 Oracle 应该支持内联执行此操作。

执行以下语句时...

create table foo (
id number not null primary key
);

create table bar (
id number not null primary key,
nick varchar2(16) not null constraint foo_nick_ck unique using index,
foo_id number not null constraint foo_fk references foo using index
);

Oracle 将响应 [42000][907] ORA-00907: 缺少右括号,并指向最后一行 using index 之前的位置。如果我删除 using index 它可以工作(但当然没有创建索引)。我保留了 nick 列作为示例,说明它在何处创建内联后备​​索引,但用于唯一约束而不是外键约束。

我知道解决方法是在单独的 DDL 语句中创建后备索引,但我非常希望使其内联整洁。

最佳答案

I am aware that a workaround is to create the backing index in a separate DDL statement, but I would very much like to have it neat and tidy inline.

不幸的是,不存在用于创建内联索引的语法。

USING INDEX 子句是语法糖:Oracle 创建索引来强制执行主键和唯一约束,无论我们是否包含该子句(*)。这是因为索引对于 Oracle 实现唯一约束是必需的。但并不需要索引来强制使用外键,这只是可取的。


(*) 除非受约束列上存在 Oracle 可以使用的现有索引。

关于oracle - 在创建表语句中内联创建外键索引的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60436590/

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