Варрайс оракул ора-02330

Я разрабатываю простое приложение для изучения оракула и объектно-реляционной базы данных с объектами и массивами... Я сделал следующий код:

это мои лаки

SQL> create or replace type software_va as varray(3) of varchar2(30);
2 /

вот объект, который я создал:

SQL> create or replace type cargo1 as object(
 2  id_cargo number,
 3  nom_cargo varchar2(20),
 4  suc ref sucursal);
 5  /

когда я пытаюсь создать таблицу таким образом:

SQL> create table cargos of cargo1(
2  primary key(id_cargo),
3  manejosoft software_va);

Я получил эту ошибку:

ERROR en line 3:
ORA-02330: datatype specification not allowed

Я не понимаю, почему я получил эту ошибку и не знаю, если я что-то не так

1 ответ

Решение

Если вы хотите реляционную таблицу с обоими object а также varray столбцы, это должно работать, и все еще имеет первичный ключ на основе идентификатора объекта:

create table cargos
(
    cargo cargo1,
    manejosoft software_va,
    constraint cargos_pk primary key (cargo.id_cargo)
);

Table created.

insert into cargos values (cargo1(1, 'test'), software_va('a', 'b', 'c'));

1 row created.

insert into cargos values (cargo1(1, 'dup test'), software_va('d', 'e', 'f'));

insert into cargos values (cargo1(1, 'dup test'), software_va('d', 'e', 'f'))
*
ERROR at line 1:
ORA-00001: unique constraint (SCOTT.CARGOS_PK) violated

select * from cargos;

CARGO(ID_CARGO, NOM_CARGO)
--------------------------------------------------------------------------------
MANEJOSOFT
--------------------------------------------------------------------------------
CARGO1(1, 'test')
SOFTWARE_VA('a', 'b', 'c')

select c.cargo.nom_cargo
from cargos c
where c.cargo.id_cargo = 1;

CARGO.NOM_CARGO
--------------------
test

Если вы хотели таблицу объектов, то вы не могли бы иметь varray колонка, как указано в комментариях:

create table cargos of cargo1
(
    primary key(id_cargo)
);
Другие вопросы по тегам