gpt4 book ai didi

oracle - 如何在 Oracle 12c 中创建带条件的索引?

转载 作者:行者123 更新时间:2023-12-03 13:33:47 25 4
gpt4 key购买 nike

我想将 PostgreSQL 数据库迁移到 Oracle 12c,例如在下面的表创建中,我发现了一些困难:

  • 如何(如果可能)使用 创建这些唯一索引哪里条款?
  • 如何正确添加这个主键 pessoa_id?
  • 为什么我收到此错误“缺少右括号”?

  • 代码:
    create table nano.pessoa (
    id GENERATED BY DEFAULT ON NULL AS IDENTITY,
    nome varchar(99) not null,
    sobrenome varchar(99) not null,
    nascimento_dt date,
    registro varchar(32) not null,
    fisica_sn bool default true, -- no caso de pf, true, pf, falso
    matriz_sn bool default false, -- no caso de pf, é o genero, masculino = true
    confirmado_sn bool default false,
    constraint pessoa_id primary key(id)
    );

    create unique index pessoa_juridica_cnpj_ix on pessoas.pessoa (registro) where (fisica_sn = false);
    create unique index pessoa_fisica_ix on pessoas.pessoa (nome, sobrenome, nascimento_dt) where (fisica_sn = true);
    create unique index pessoa_fisica_cpf_ix on pessoas.pessoa (registro) where ((fisica_sn = true) and ((registro <> null) and (registro <> '')));

    最佳答案

    Oracle DB 中没有条件索引,您可以将逻辑转换为基于函数的索引。
    所以以下:

    create unique index pessoa_juridica_cnpj_ix on pessoa (registro) where (fisica_sn = false);
    在 Oracle SQL 中变为:
    create unique index pessoa_juridica_cnpj_ix on pessoa (case when fisica_sn = false then registro end) ;

    关于oracle - 如何在 Oracle 12c 中创建带条件的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43662936/

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