IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sybase Discussion :

ASE 12.5 creation FK à effet retroactif


Sujet :

Sybase

  1. #1
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 247
    Points : 473
    Points
    473
    Billets dans le blog
    1
    Par défaut ASE 12.5 creation FK à effet retroactif
    Bonjour,

    Table A pkA clef primaire
    Table B fkBA clef etrangere pointe sur pkA

    Les 2 tables sont remplies avant de créer les contraintes.
    Existe -t-il une option qui permette la retroactivité de la fkBA car par défault la contrainte ne s'applique que pour les nouvelles valeurs ( inserées ou updatées )

    D'avance merci.

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    Si mes souvenirs sont bons un "ALTER TABLE ADD CONSTRAINT FOREIGN KEY ..." ne va s'appliquer qu'aux nouvelles modifications de la table, donc cela devrait convenir.

    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

  3. #3
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 247
    Points : 473
    Points
    473
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par mpeppler
    Si mes souvenirs sont bons un "ALTER TABLE ADD CONSTRAINT FOREIGN KEY ..." ne va s'appliquer qu'aux nouvelles modifications de la table, donc cela devrait convenir.

    Michael
    Mais justement, je voudrais que la contrainte soit vérifiée aussi pou rles données déjà existantes !

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    Oops - désolé, j'ai mal lu la question.

    Non, je ne pense pas qu'il y ai d'option qui permette de vérifier une contrainte de type FK après coup. On peut évidemment écrire une requête qui fait le check...

    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

  5. #5
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 247
    Points : 473
    Points
    473
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par mpeppler
    Oops - désolé, j'ai mal lu la question.

    Non, je ne pense pas qu'il y ai d'option qui permette de vérifier une contrainte de type FK après coup. On peut évidemment écrire une requête qui fait le check...

    Michael
    Pensez vous qu'une tentative de delete dans la table A suffit pour savoir si il n'y a pas de contrainte active sachant qu'il n'y a pas de trigger ?
    ou autrement demandé, n'y a t-il pas de risque de delete en cascade sur sybase 12.5 ?

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    Sybase n'a pas de delete cascade - si le delete invalide la FK le delete est en principe inhibé.

    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

  7. #7
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 247
    Points : 473
    Points
    473
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par mpeppler
    Sybase n'a pas de delete cascade - si le delete invalide la FK le delete est en principe inhibé.

    Michael
    Parfait, Quelqu'un connait il sous SYB 12.5 une alternative au curseur pour deleter les lignes qui peuvent l'etre et laisser en place celles qui poseront un probleme à cause d'une clé étrangere ?

  8. #8
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    Quelque chose du genre devrait marcher:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    delete from tablea
    where not exists (select * from tableb where tableb.pk = tablea.fk)
    Cela ne sera pas très rapide, mais ce n'est pas non plus une requête à faire tous les jours :-)

    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

  9. #9
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 247
    Points : 473
    Points
    473
    Billets dans le blog
    1
    Par défaut
    En fait j'ai de tres grosses tables filles (Table B fkBA clef etrangere pointe sur pkA)
    et peu de suppressions dans ma table mere (Table A pkA clef primaire)

    Je vais tester les suppressions une à une via un curseur sur les enregistrement de A que je sais devoir effacer si c'est possible.

    Cependant J'aimerais dans ces cas (pour mes log) filtrer les messages d'erreurs sur les violations de contraintes et signifier grace à @@error!=0 que la ligne n'a pas été supprimée.

    En gros, y a-til un moyen d'éviter la sortie de :

    Server Message: Number 547, Severity 16
    Server 'mon_serveur', Line 1:
    Dependent foreign key constraint violation in a referential integrity constraint. dbname = 'ma_base', table name = 'ma_table, constraint name = 'ma_FK'.
    Server Message: Number 3621, Severity 10
    Server 'mon_serveur', Line 1:
    Command has been aborted.

    Je n'ai rien trouvé de probant avec sp_altermessage et sp_bindmessage ...

  10. #10
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    Citation Envoyé par Jean.Cri1
    En gros, y a-til un moyen d'éviter la sortie de :

    Server Message: Number 547, Severity 16
    Server 'mon_serveur', Line 1:
    Dependent foreign key constraint violation in a referential integrity constraint. dbname = 'ma_base', table name = 'ma_table, constraint name = 'ma_FK'.
    Server Message: Number 3621, Severity 10
    Server 'mon_serveur', Line 1:
    Command has been aborted.
    Je ne pense pas que ce soit possible au niveau de l'instance.
    Par contre c'est évidemment possible dans le client si celui-ci permet la customisation du "error handler" (p.ex. client perl utilisant DBD::Sybase).

    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

  11. #11
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 247
    Points : 473
    Points
    473
    Billets dans le blog
    1
    Par défaut
    Merci.
    Je clos

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. creation JFrame avec effet
    Par fantomas261 dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 21/08/2007, 15h38
  2. Réponses: 1
    Dernier message: 15/05/2007, 11h27
  3. [ASE] Duree de creation d'index trop longue
    Par greg75 dans le forum Sybase
    Réponses: 5
    Dernier message: 14/02/2007, 09h23
  4. [ASE]création de table temporaire
    Par Oraman dans le forum Sybase
    Réponses: 3
    Dernier message: 16/08/2006, 14h55
  5. [ASE 12.5.3][TSQL] - Creation d'une table temporaire en dynamique
    Par CVince dans le forum Adaptive Server Enterprise
    Réponses: 4
    Dernier message: 16/06/2006, 15h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo