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
 
CREATE OR REPLACE TYPE t_lgncom IS OBJECT (idmed CHAR(13), qte INTEGER);
CREATE OR REPLACE TYPE col_t_lgncom IS TABLE OF t_lgncom;
 
CREATE TABLE Commandes
(
	idcom CHAR(13) NOT NULL,
	idpharma CHAR(13),
	datecom DATE,
	lgnscom col_t_lgncom,
	remisecom NUMBER,
	CONSTRAINT pkCommandes PRIMARY KEY (idcom),
	CONSTRAINT fkCommandes FOREIGN KEY (idpharma) REFERENCES Pharmas(idpharma)
)
NESTED TABLE lgnscom STORE AS table_lgnscom, 
TABLESPACE MEDIC STORAGE (INITIAL 200k NEXT 100k MAXEXTENTS 2);
Voilà, j'aimerai ajouter la contrainte d'unicité suivante :
dans une meme commande on ne doit pas pouvoir commander plusieurs fois le meme medicament (idmed).

j'ai donc essayé ceci sans illusion:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
ALTER TABLE table_lgnscom ADD CONSTRAINT unique_med UNIQUE(idmed);
et comme de fait cela s'applique à toutes les commandes
Comment spécifier que je ne veux l'unicité que du couple (idmed,reference du parent) ?

je voudrais egalement savoir s'il est possible de faire un select directement sur la nested table pour afficher toutes les lignes (avec la ref du parent de chaque ligne.

Merci

PS: Merci bcq à SheikYerbouti pour son tuto sur le PL/SQL