Варрайс оракул ора-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)
);