Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1663 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Postgresql] Truncate cascade??

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Postgresql] Truncate cascade??

n°1618711
Bahamut22
Light is right !
Posté le 04-10-2007 à 10:18:07  profilanswer
 

Bonjour,
 
Juste un détail qui me semble étonnant. J'étais persudé il y'a quelque temps que : truncate 'nomtable' cascade  ,marchait sous postgresql.
Me serais je totalement trompé??  :??:  
 
Merci de vos réponses

mood
Publicité
Posté le 04-10-2007 à 10:18:07  profilanswer
 

n°1618713
Taz
bisounours-codeur
Posté le 04-10-2007 à 10:24:18  profilanswer
 
n°1618718
MagicBuzz
Posté le 04-10-2007 à 10:32:34  profilanswer
 

Etrange ce mot-clé "cascade" sur truncate... habituellement, truncate ça sert justement à shooter les données d'une table sans se soucier de l'intégrité...


Message édité par MagicBuzz le 04-10-2007 à 10:32:47
n°1618719
Taz
bisounours-codeur
Posté le 04-10-2007 à 10:34:14  profilanswer
 

Ca veut rien dire ce que tu dis: on parle de SGBD-R, ça n'est pas possible de violer les contraintes.

n°1618722
MagicBuzz
Posté le 04-10-2007 à 10:37:11  profilanswer
 


Description  
TRUNCATE supprime rapidement toutes les lignes d'une table. Elle a le même effet qu'un DELETE non qualifié mais elle ne parcourt pas la table ce qui est plus rapide. C'est le plus utile sur les grosses tables.


 
"S'il ne parcours pas les lignes", je vois mal comment il va vérifier l'intégrité...
 
D'autant que l'intégrité ne s'arrête pas aux contraintes FK... Les triggers entre autre ne sont pas levés, alors faut pas espérer avoir des données dans un état stable à la fin du traîtement.


Message édité par MagicBuzz le 04-10-2007 à 10:38:41
n°1618723
MagicBuzz
Posté le 04-10-2007 à 10:41:01  profilanswer
 

Et pour info :


Compatibility  
SQL92  
There is no TRUNCATE statement in SQL92.  


 
A partir de là, ça peut très bien faire de la tarte à la fraise, il n'est plus question de parler de "SGBD-R" en règle générale. Chaque éditeur est libre de faire la tambouille qu'il veut de son côté.
 
Voici d'ailleurs une des conditions d'utilisation de TRUNCATE sur "ASASQL" :


Il n'existe pas de clés étrangères dirigées vers la table ou en provenant.


=> Si tu dois dropper tes contraintes avant... C'est sûr que c'est plus simple...


Message édité par MagicBuzz le 04-10-2007 à 10:45:32
n°1618724
MagicBuzz
Posté le 04-10-2007 à 10:42:05  profilanswer
 

Et enfin :


TRUNCATE ne peut pas être exécutée dans un bloc de transaction (BEGIN/COMMIT), car il n'y a pas moyen de faire une annulation.  


 
Si c'est pas transactionnel, alors on sort du scope du SGBD-R. A partir de là on n'a pas à espérer qu'il respecte les contraintes.

n°1618728
MagicBuzz
Posté le 04-10-2007 à 10:52:09  profilanswer
 

En jettant un oeil sur la doc d'Oracle 10g, je vois qu'on peut truncater une table sans tenir compte des FK. Il faut cependant les désactiver avant.
http://download.oracle.com/docs/cd [...] _10006.htm
 
Par contre, dans des versions plus anciennes (7 et 8 au moins) cette désactivation n'était pas nécessaire.

n°1618739
Bahamut22
Light is right !
Posté le 04-10-2007 à 11:14:37  profilanswer
 

OK, j'avais déja regardé la doc postgresql et cela ne fonctionnait pas...mais je suis tout à fait d'accord avec vous.
 
En fait, je crois tout simplement que j'avais du faire mon cascade pour un exemple très simple ou ces tables en cascade n'interféraient que très peu avec l'ensemble du système.
Je vais regarder si je peux désactiver mes fk.
Merci pour votre aide  :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Postgresql] Truncate cascade??

 

Sujets relatifs
[PostgreSQL] Remplacer des valeurs nulles par des zéros ...[PostgreSQL] moteur de recherche
modifier une occurence en cascade doc xls etc..[PostgreSQL et C] Requête rebelle
Exporter une base MySQL vers PostgreSQLPostgreSQL et libpqxx.h
[PostGreSQL] Inserer une requete dans un champ ?Menu en cascade
Perl DBI et truncateEchapper des caractères en postgresql
Plus de sujets relatifs à : [Postgresql] Truncate cascade??


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)