Précédent   Forum des professionnels en informatique > Bases de données > Sybase
Sybase Forum sur la base de données Sybase. Avant de poster -> F.A.Q Sybase, Tutoriels Sybase
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/08/2007, 17h11   #1
Invité régulier
 
Inscription : septembre 2006
Messages : 26
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 26
Points : 6
Points : 6
Par défaut ASE 12.5.3 : impossible de supprimer une table

Bonjour,

J'ai une question à priori très simpliste

Je souhaite supprimer une table nommée TOTO (appartenant à la base base_A) mais lors de la suppression un message me dit :
"Impossible de supprimer la table TOTO car des contraintes d'intégrité référentielles y sont encore définies"

Or je n'en vois aucune ! il n'y a qu'une primary key sur ma table.

Plus bizarre, quand je fais un sp_helpconstraint TOTO, j'ai le résultat suivant indiquant 2 lignes :
name defintion created
------ --------- ------------
* BASE_2.. FOREIGN KEY (*) REFERENCES TOTO(ID_CPD_TOTO)

et

PK_TOTO PRIMARY KEY INDEX (ID_CPT_TOTO) : NON CLUSTERED, FOREIGN KEY

Qu'est-ce que c'est que ce "*" dans la colonne name a la premiere ligne ?

Help !!
merci d'avance
Commandant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2007, 08h04   #2
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
Un rapide check du code de la procédure sp_helpconstraint montre ceci:
Code :
1
2
3
4
5
6
7
8
 
...
SELECT @foreign_keys = isnull(convert(varchar(30), col_name
 (@tableid, @fokey1 , @frgndbid)), "*") + ", "
        + isnull(convert(varchar(30), col_name(@tableid, @fokey2 , @frgndbid)), "*") + ", "
        + isnull(convert(varchar(30), col_name(@tableid, @fokey3 , @frgndbid)), "*") + ", "
        + isnull(convert(varchar(30), col_name
...
Si j'interprète cela correctement cela voudrait dire que la référence (tableId, columnId et dbid) n'est plus valable. A priori il y a encore une ligne dans sysconstraints et/ou sysreferences dans BASE_2 qui fait référence à ta table TOTO. Est-ce que les tables systèmes ont été éditées à la main sur ce serveur ?

En attendant, essaye:
Code :
1
2
 
SELECT * FROM BASE_2..sysreferences WHERE reftabid = object_id('TOTO')
A partir de là tu peux essayer de voir si tu retrouve la source de la référence (tableid). Si cette ligne est rééllement orpheline (pas de table correspondante à la tableid) alors tu peux probablement l'effacer pour ensuite pouvoir dropper la table TOTO. Comme d'habitude lorsque l'on édite les tables systèmes il faut observer la plus grande prudence (transactions, bien vérifier que seule la ligne qu'on a voulu effacer/éditer ait été affectée, etc.)

Michael
__________________
Michael Peppler
Membre de TeamSybase - www.teamsybase.com

"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2007, 10h26   #3
Invité régulier
 
Inscription : septembre 2006
Messages : 26
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 26
Points : 6
Points : 6
Merci beaucoup je vais essayer ça

pour répondre à ta question, la table système n'a pas été éditée dans la base BASE_2 ... bizarre ça .... et je ne vois aucune raison qu'il y ait un lien entre BASE_1 et BASE_2 .. peut-l'uné a été rechargée à partir d'un DUMP de l'autre bizarre .... merci encore
Commandant est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h39.


 
 
 
 
Partenaires

Hébergement Web