Bonjour,

Comme l'indique le titre, je travaille actuellement sur une base de données objet et je voudrais :
  • Créer un type NomType0
  • Créer une table NomTable0 de NomType0
  • Créer un type NomType1
  • Créer un type NomType2 qui spécialise NomType1, ce type contient un attribut qui est une référence à NomType0
  • Créer une table objet NomTable1 composée de NomType2
  • Faire des insertions dans NomTable1


Ce qui donne pour l'instant en SQL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
CREATE TYPE NomType0  AS OBJECT(
Libelle CHAR(30), 
Niveau CHAR(30),
Groupe Groupe_T); //Groupe_T est un type
 
CREATE TABLE NomTable0 OF NomType0 (primary key(Libelle, Niveau))
NESTED TABLE Groupe STORE AS Groupeobjet_tab
 
CREATE TYPE NomType1 AS OBJECT (
Num CHAR(5), 
Nom VARCHAR(30), 
Prenom VARCHAR(30), 
Annee Annee_T, 
Adresse Adresse_T) not final;
 
CREATE TYPE NomType2 UNDER NomType1 (
NumC char(10),
Curs REF NomType0 
) final;
 
CREATE TABLE NomTable1 OF NomType2;
 
INSERT INTO NomTable1 
VALUES ('00000', 'nom', 'prenom', Annee_T(1900), Adresse_T('12', 'rue de Rennes', 'Paris'),'1045534', NULL);
 
UPDATE NomTable1  SET Curs = (SELECT  REF(c) FROM NomTable0 c WHERE c.Libelle = 'libel' AND c.Niveau = 'niv') WHERE NumC = '1045534';
Le problème c'est que l'insertion dans NomTable1 ne fonctionne pas et je ne parviens pas à voir pourquoi. J'ai bien des données dans Nomtable0 donc à priori ce n'est pas ça.

Peut-être auriez-vous une piste ?