delete sur 3 tables en même temps
Bonjour,
Je cherche à effacer sur oracle 9i les lgnes sur 3 tables en même temps, j'arrive à sélectionner les infos que je souhaite effacées:
Code:
1 2
|
select p.piece,p.codenf,p.codfam,dp.ndossier,dp.npiece,di.dossier,di.tdossier,di.codenf,di.codfam from piece p, dos_piec dp, dossier_ind di where p.piece = dp.npiece and p.codfam = di.codfam and p.codfam=002234 and dp.ndossier=45; |
Résultat obtenu
PIECE CODENF CODFAM NDOSSIER NPIECE DOSSIER TDOSSIER CODENF CODFAM
1 vide 002234 45 1 45 3 vide 002234
4 vide 002234 45 4 45 3 vide 002234
quand je remplace par delete il dit expression terminée non correctement.
Je lance cette requete de suppression à partir d'un script PHP.
A partir d'une procédure stockée il n'y aura pas moyen de faire cette suppression?
non tu n'es pas abandonné
Bon
- la première réaction : impossible
- la deuxième tentation (mauvaise) passer par une vue basée sur ton select. hélas delete ne peut se faire que sur la table principale
http://download.oracle.com/docs/cd/B...s.htm#i1007900
- enfin peut être une piste avec Tables collections mais là je n'y connais strictement rien !
http://download.oracle.com/docs/cd/B...2.htm#i2071637
Est-ce que ça inspire quelqu'un ????
ci dessous un extrait sur les vices et vertus des vues.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
DELETE Statements
You can delete from a join view provided there is one and only one
key-preserved table in the join.
The key-preserved table can be repeated in the FROM clause.
The following DELETE statement works on the emp_dept view:
DELETE FROM emp_dept WHERE ename = 'SMITH';
This DELETE statement on the emp_dept view is legal
because it can be translated to a DELETE operation on the base emp table,
and because the emp table is the only key-preserved table in the join.
In the following view, a DELETE operation is permitted,
because although there are two key-preserved tables,
they are the same table.
That is, the key-preserved table is repeated.
In this case, the delete statement operates on the first table in the FROM list (e1, in this example):
CREATE VIEW emp_emp AS SELECT e1.ename, e2.empno, e2.deptno
FROM emp e1, emp e2 WHERE e1.empno = e2.empno; |