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

PowerAMC Discussion :

Problème Suppression de FK


Sujet :

PowerAMC

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 43
    Points : 36
    Points
    36
    Par défaut Problème Suppression de FK
    Bonjour à tous,

    J'utilise la version 16.5.0.3982 de Power AMC pour concevoir et faire évoluer un modèle de données destiné à SQL Server 2012. Je rencontre des problèmes avec la suppression PK dans les scripts générés par Power AMC.

    Je m'explique en partant d'un exemple très simple et de son MCD

    Soit une entité T1 et une entité T2 possédant une clé primaire PKT2. Je définis une association 0,1/0,n entre ces deux entités. Je génère mon modèle physique de données de sorte à obtenir deux tables ayant chacune leur PK avec en plus dans la table T1 une foreign key référençant la PK de T2.

    Je génère le script et je le joue sur ma base.

    Je reviens ensuite dans mon MCD et j'ajoute un champ dans l'entité T2 pour entraîner volontairement une modification de la table T2 dans le modèle physique. Dans ce contexte Power AMC renomme la table T2 en tmp_T2 pour pouvoir recréer une table T2 avec le nouveau champ et ensuite recopier le contenu backupé dans tmp_T2 vers T2, nouvelle version. Jusqu'ici je ne vous apprend rien, c'est le comportement de base.

    Sauf qu'avant de renommer T2 en tmp_T2, Power AMC génère un script de suppression de la PK de T2 de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    alter table T2
       drop constraint PK_T2
    ;
    Et le problème c'est que cette PK est référencée par la FK de T1 et Power AMC ne me génère pas le bout script dropant cette clé étrangère en amont du drop de la PK de T2 ; bout de script qui devrait ressembler à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if exists (select 1
       from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
       where r.fkeyid = object_id('T1') and o.name = 'FK_T1_T1T2_T2')
    alter table T1
       drop constraint FK_T1_T1T2_T2
    ;
    Chose doublement étonnante : il me génère bien les lignes responsables de la recréation de cette contrainte en fin de script...

    J'obtiens donc une erreur du style :
    Msg 3725, Level 16, State 0, Line 9
    The constraint 'PK_T2' is being referenced by table 'T1', foreign key constraint 'FK_T1_T1T2_T2'.
    Msg 3727, Level 16, State 0, Line 9
    Could not drop constraint. See previous errors.
    Jusqu'ici je rajoutais les instructions de suppression de FK à la main dans le script généré par Power AMC en itérant dans un contexte rollbacké jusqu'à ne plus avoir d'erreur mais plus mon modèle évolue, plus ça devient fastidieux à faire

    J'ai essayé tout ce qui me passait par la tête (notamment dans les propriétés du modèle et du SGBD) pour essayer de lui faire générer ces lignes manquantes mais en vain. Donc si quelqu'un a déjà été confronté à ce problème/besoin je suis preneur de ses lumières

    Précision : mes contraintes sont en "Declarative" et volontairement pas en "Trigger".

    D'avance merci beaucoup à ceux qui prendront le temps de me lire et peut-être de me répondre

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 104
    Points : 112
    Points
    112
    Par défaut Non reproduit
    Bonjour

    J'utilise powerAMC en version 16.1 (avec SGBD SQL server 2008)
    J'ai testé votre cas d'utilisation et je n'ai pas le même comportement.
    Le script contient bien l'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if exists (select 1
       from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
       where r.fkeyid = object_id('TABLE_1') and o.name = 'FK_TABLE_1_REFERENCE_TABLE_2')
    alter table TABLE_1
       drop constraint FK_TABLE_1_REFERENCE_TABLE_2
    go
    Pour éviter de passer par une table temporaire, vous pouvez cocher "utiliser les instructions alter lorsque c'est possible" (voir capture d'écran) au moment de la génération. Dans le cas d'un ajout de champ par exemple, ça évite de recréer toute la table.
    Images attachées Images attachées  

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 43
    Points : 36
    Points
    36
    Par défaut
    Bonjour,

    Je vous confirme que dans la version 16.5 il s'agit bien d'un problème identifié par un certain nombre d'utilisateurs et reconnu en tant que bug par SAP (voir discussion ici).

    Ce problème a été pris en charge par leurs équipes techniques et le hot fix sera délivré lors de la prochaine mise à jour (16.5.2 EBF 2) qui aura lieu à la fin du mois.

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

Discussions similaires

  1. [MySQL] Problème suppression enregistrement
    Par Le Mad dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 21/05/2006, 18h29
  2. [DOM XML] Suppression de noeud XML
    Par xenoox dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 02/05/2006, 04h37
  3. Problème suppression table
    Par djuddju dans le forum Oracle
    Réponses: 1
    Dernier message: 14/04/2006, 18h02
  4. [Upload] Problème suppression de fichier
    Par julihus dans le forum Langage
    Réponses: 16
    Dernier message: 30/03/2006, 21h40
  5. [VBA-A] Problème Suppression enreg en cours
    Par _developpeur_ dans le forum Access
    Réponses: 2
    Dernier message: 17/10/2005, 21h08

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