Une table peut être définie en référençant un type de données plutôt que par des instructions LDD classiques. On parle alors de table objet.
Synonymes : table-objet, table d'objets
nom_table de nom_type (#attributs_clés)
CREATE TABLE nom_table OF nom_type (
PRIMARY KEY(attribut1),
attribut2 NOT NULL,
UNIQUE (attribut3)
FOREIGN KEY (attribut4) REFERENCES ...
);
Il est possible, sur une table ainsi définie, de spécifier les mêmes contraintes que pour une table créée avec une clause CREATE TABLE (contraintes de table). Ces contraintes doivent être spécifiées au moment de la création de la table, et non au moment de la création du type (bien que la définition de type permet de spécifier certaines contraintes, comme NOT NULL).
Les enregistrements d'une table-objet peuvent être identifiés par un OID
Des méthodes peuvent être associées à une table-objet.
Cette modalité de définition de schéma permet de profiter de l'héritage de type pour permettre l'héritage de schéma de table.
CREATE OR REPLACE TYPE typIntervenant AS OBJECT(
pknom varchar2(20),
prenom varchar2(20)
);
/
CREATE TABLE tIntervenant OF typIntervenant (
PRIMARY KEY(pknom),
prenom NOT NULL
);