我有问题插入值到表的属性是REF和设置的REF类型在SQL
我有tsportifs类型:
create type tsportifs as object (
idsportif integer,
nom varchar2(50),
prenom varchar2(50),
sexe varchar2(50),
age integer
);
/
和tsport类型:
create type tsport as object (idsport integer, libelle VARCHAR2(50));
/
以及我所拥有的联想:
alter type tsportifs add attribute sportifs_sport t_set_ref_sport cascade;
alter type tsportifs add attribute sportifs_coneiller ref tsportifs cascade;
对于表:
create table sportifs of tsportifs (
primary key(idsportif),
CONSTRAINT chk_sexe CHECK (sexe IN ('F', 'M'))
)nested table sportifs_sport store as table_sportifs_sport;
create table sport of tsport (primary key(idsport))nested table sport_sportifs store as table_sport_sportifs;
当我试图插入:
INSERT INTO Sportifs VALUES(1,'BOUTAHAR','Abderahim','M',30,REF(tsportifs(NULL)),REF(tsport(2)));
我得到这个错误:
SQL> INSERT INTO Sportifs VALUES(1,'BOUTAHAR','Abderahim','M',30,REF(tsportifs(NULL)),REF(tsport(2)));
INSERT INTO Sportifs VALUES(1,'BOUTAHAR','Abderahim','M',30,REF(tsportifs(NULL)),REF(tsport(2)))
*
ERROR at line 1:
ORA-00907: missing right parenthesis
我不知道如何在嵌套表中插入多个值。
1条答案
按热度按时间s2j5cfk01#
您的DDL语句没有意义,因为:
t_set_ref_sport
;和sport
表是用嵌套表定义的,但该类型不包含任何集合。此外,
INSERT
语句没有意义(忽略它在语法上是无效的),因为您没有将任何行INSERT
写入sport
以供其引用。如果您有以下类型:
然后是表:
然后,您可以向引用添加范围约束:
然后插入数据:
fiddle
如果你想要一个
NULL
引用,那么只需要插入NULL
。如果要插入对行的引用,请用途:
如果要将引用集合插入到嵌套表中,请用途: