Suppression dans deux tables [Résolu]

Signaler
Messages postés
8
Date d'inscription
mardi 16 décembre 2008
Statut
Membre
Dernière intervention
16 décembre 2008
-
Messages postés
8
Date d'inscription
mardi 16 décembre 2008
Statut
Membre
Dernière intervention
16 décembre 2008
-
Hello!

J'ai trois tables :

Employés (NomE, prenomE, n°employeE,adresse,statut)
Caissiers ( N°employeC,n°caisse)
Reassortisseurs (N° employeR, Ndepartement)

Je voudrais supprimé les données d'un employé qui serait un caissier, donc faire une suppression sur deux tables.

J'ai testé:

Delete from caissiers,employes where nemployee='3615' and nemployeC='3615';

Delete from caissiers,employes where nemployeC.Caissiers=nemployeE.Employes and NomE='Deschamps';

A chaque fois il y a un 'problème de syntaxe au niveau de la virgule entre caissiers/employés'.

Comment je pourrais faire?


<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="ProgId" content="Word.Document" />
<meta name="Generator" content="Microsoft Word 11" />
<meta name="Originator" content="Microsoft Word 11" />
<link rel="File-List" href="file:///C:%5CUsers%5CSowilo%5CAppData%5CLocal%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml" />
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:HyphenationZone>21</w:HyphenationZone>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
</w:WordDocument>
</xml><![endif]-->
<!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" LatentStyleCount="156">
</w:LatentStyles>
</xml><![endif]-->
<style>
<!--
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:Arial;
mso-fareast-font-family:"Times New Roman";
font-style:italic;
mso-bidi-font-style:normal;}
@page Section1
{size:612.0pt 792.0pt;
margin:70.85pt 70.85pt 70.85pt 70.85pt;
mso-header-margin:36.0pt;
mso-footer-margin:36.0pt;
mso-paper-source:0;}
div.Section1
{page:Section1;}
-->
</style>
<!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Tableau Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;}
</style>
<![endif]-->
Merci!

Cile

11 réponses

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Salut

Le delete fonctionne table par table.
Tu peux utiliser une transaction pour securiser le tout.

Ou a la limite des foreignkey delete cascade.
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
union c'est pour des select
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
si tu fais un delete de ton caissier
et apres de ton employe

et par hasard ton employé ne peut etre supprimé par exemple
il est chef d'autres employés (il est en cle etrangere d'une autre table)

Donc la suppression est impossible

Donc le caissier n'est pas detruit car la transaction annule la destruction.
Car dans le cas contraire tu resterais avec un employe qui se serait plus rien
(pas caissier )


esperant avoir ete clair
Messages postés
8
Date d'inscription
mardi 16 décembre 2008
Statut
Membre
Dernière intervention
16 décembre 2008

On pourrait utiliser 'Union' pour lier les deux requêtes?
Messages postés
8
Date d'inscription
mardi 16 décembre 2008
Statut
Membre
Dernière intervention
16 décembre 2008

Bon je pouvais rêver!
Qu'est-ce que tu voulais dire par 'transaction pour sécuriser le tout'?
Messages postés
8
Date d'inscription
mardi 16 décembre 2008
Statut
Membre
Dernière intervention
16 décembre 2008

Ah j'ai saisi! Merci
Messages postés
8
Date d'inscription
mardi 16 décembre 2008
Statut
Membre
Dernière intervention
16 décembre 2008

Il n'y a aucun moyen de faire cette opération sur PostgreSQL?
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Quelle opération

Les transactions si?

http://www.java2s.com/Code/PostgreSQL/Transaction/Committingatransaction.htm
Par exemple

recherche

COMMIT & ROLLBACK
Messages postés
8
Date d'inscription
mardi 16 décembre 2008
Statut
Membre
Dernière intervention
16 décembre 2008

Pas seulement la transaction mais la suppression tout court. Ou bien c'est aussi delete table par table?
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
La doc est ta premiere source.
On consulte avant de poser une question

Merci d'y réflechir.
http://www.postgresql.org/docs/7.4/interactive/sql-delete.html
http://www.postgresql.org/docs/8.2/static/ddl-constraints.html
Messages postés
8
Date d'inscription
mardi 16 décembre 2008
Statut
Membre
Dernière intervention
16 décembre 2008

Ok merci! Même si je ne suis pas certaine que le programme Putty dont je dispose prenne tout ce qui concerne Postgre'