|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : mai 2005 Messages : 2 ![]() |
bonjour,
j'ai pas mal parcouru le forum, les faq et tout ... et sauf erreur je n'ai pas trouvé la reponse aux problemes suivants: je souhaiterais vider completement la base sans l'effacer (donc pas de drop database). j'ai 50 tables, je fais des tests dessus, je modifie souvent, donc 50 drop table, c'est pas cool non plus surtout qu'apparemment il faut effacer les cles avant. l'autre requete est : obtenir la liste des cles de toute la base enfin, comment effacer toutes les clefs rapidement? j'imagine que je ne suis pas le premier a etre confronté a cette problematique, mais pour trouver l'info, meme dans la doc sybase...dur, dur merci pour votre aide precieuse! Lud |
|
|
00
|
|
|
#2 |
|
Invité de passage
![]() Inscription : mai 2005 Messages : 2 ![]() |
hello!
je me disais qu'il y avait des gens calés sur ce forum, please, help me! many thanks! LC |
|
|
00
|
|
|
#3 |
|
Membre à l'essai
![]() Inscription : février 2006 Messages : 28 ![]() |
Salut !
3 solutions: 1/Je te conseille de trouver un utilitaire qui peu t'extraire la structure de la base (script SQL de suppression et de création des tables) par exemple DBArtisant en version démo (http://www.embarcadero.com/downloads...ddbartisan.jsp) Cela te permettrait de supprimer puis de créer et tes tables dès que t'en a besoin 2/ Supprime toutes tes données une fois pour toute (fastidieux la première fois mais ce sera fait une fois pour toute) puis fait un dump que tu rechargeras dès que tu auras besoin de ta base vide 3/Supprimes toutes les clés étrangères (Foreign Keys) , fais un truncate de tes tables puis recrée les Foreign Keys Justement pour ce dernier point tu verras que DB Artisant te sera très utile mais attention c'est une version démo limité à 15 jours. Ce sont trois méthodes que je te propose mais il existe sûrement d'autres méthodes pour le faire. Attendons les propositions des "collègues". |
|
|
00
|
|
|
#4 |
|
Membre à l'essai
![]() Inscription : février 2006 Messages : 28 ![]() |
Voici un script qui peu générer la suppression création des Foreigns keys.
C'est du 'vite fait' que tu devras OPTIMISER D'URGENCE mais bon je ne vais pas te macher tout le travail /****************************************************************************************************** * Attention !!!!!! : script à OPTIMISER par une PROCEDURE STOCKEE car elle ne prend le cas que des * FOREIGN KEYS portrant sur 4 colonnes MAXI (il peu y en avoir jusqu'à 16 !!!! mais bon c'est rare * Il faudrait passer par un curseur + table temporaire pour éviter la redondance du code du type : * ( * select "," + col.name * from sysobjects as tab, * syscolumns as col * where tab.id = col.id * and col.id = frk.tableid * and col.colid = .... * * ) * code qui est optimisé à 0% * SQL972 le 20/06/2006 *******************************************************************************************************/ /*******************************/ /* GENERATION DES SUPPRESSIONS */ /*******************************/ select "ALTER TABLE " + object_name(frk.tableid) + " DROP CONSTRAINT " + object_name(frk.constrid) from sysreferences frk /*******************************/ /* GENERATION DES CREATIONS */ /*******************************/ select " ALTER TABLE " + object_name(frk.tableid) + " ADD CONSTRAINT "+ object_name(frk.constrid) + " FOREIGN KEY (" + ( select col.name from sysobjects as tab, syscolumns as col where tab.id = col.id and col.id = frk.tableid and col.colid = frk.fokey1 ) + ( select "," + col.name from sysobjects as tab, syscolumns as col where tab.id = col.id and col.id = frk.tableid and col.colid = frk.fokey2 ) + ( select "," + col.name from sysobjects as tab, syscolumns as col where tab.id = col.id and col.id = frk.tableid and col.colid = frk.fokey3 ) + ( select "," + col.name from sysobjects as tab, syscolumns as col where tab.id = col.id and col.id = frk.tableid and col.colid = frk.fokey4 ) + ") REFERENCES " + object_name(frk.reftabid) + " (" + ( select col.name from sysobjects as tab, syscolumns as col where tab.id = col.id and col.id = frk.tableid and col.colid = frk.refkey1 ) + ( select "," + col.name from sysobjects as tab, syscolumns as col where tab.id = col.id and col.id = frk.tableid and col.colid = frk.refkey2 ) + ( select "," + col.name from sysobjects as tab, syscolumns as col where tab.id = col.id and col.id = frk.tableid and col.colid = frk.refkey3 ) + ( select "," + col.name from sysobjects as tab, syscolumns as col where tab.id = col.id and col.id = frk.reftabid and col.colid = frk.refkey4 ) +")" from sysreferences frk |
|
|
00
|
|
|
#5 |
|
Membre à l'essai
![]() Inscription : février 2006 Messages : 28 ![]() |
Bon OK là voila en procédure stockée;
Crée tous les ordres de suppression puis de création des Foreigns keys ps: prend maintenant en charge les FOREIGN KEYS portrant sur 16 colonnes maxi (ASE 12.5)
|
|
|
00
|
|
|
#6 |
![]() ![]() |
En 12.5 on peut utiliser ddlgen pour extraire cette information.
Il y a aussi des freeware (p.ex. dbschema.pl - voir http://www.midsomer.org) qui permet de faire une bonne partie du travail. Michael |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com