Précédent   Forum du club des développeurs et IT Pro > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 16/02/2013, 14h35   #1
Nephi
Membre du Club
 
Homme Cédric Müller
Développeur application lié aux télécommunication
Inscription : juin 2008
Messages : 100
Détails du profil
Informations personnelles :
Nom : Homme Cédric Müller
Âge : 30
Localisation : France

Informations professionnelles :
Activité : Développeur application lié aux télécommunication
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juin 2008
Messages : 100
Points : 41
Points : 41
Par défaut mise a jour automatique de plusieurs champs en même temps

Bonjours, toujours dans le cadre du développement de ma base, je doit applique l’intégrité référentielle en cascade mais je me retrouve bloqué et sollicite donc votre aide.

Je dispose d'une table nommé Produit. celle-ci dispose des champs suivant
Idx, int non null
ID, nchar(13) non null, PK
Prix decimal(8,4) non null
Quantité int non null
Prix unitaire décimal(8,4) non null (calculé Prix / quantité)

J'ai une autre table Preparation
Idx, int non null
ID, nchar(13) non null PK
Produit nchar(13) non null, FK sur ID de la table produit
Prix decimal(8,4)

J'applique l'integrité référentielle en cascade sur update et delete sur la FK
Cela marche bien, si l'id change dans la table produit, celui-ci et mis a jour automatiquement dans la table prepa

Le prix de la table Prepa et lié a la table Produit
J'aurai aimé mettre un champs calculé du genre = Produit.[Prix unitaire] mais apparemment je peu pas faire un champs calculé a partir d'un champs d'un autre table. Si cela est possible et que quelqu'un a la solution je suis preneur.

ensuite j'aurai aimé appliqué l’intégrité sur le dit champs, c'est a dire mettre automatiquement a jour le champs prix de la table prepa si la valeur change dans la table produit. j'ai essayé de crée un FK mais cela ne marche pas car il n'y a pas de contrainte d'unicité (normal me dirait vous)
y a t'il une solution ? j'ai commencé a regardé via les trigger mais comme je n'en ai jamais fait auparavant je suis un peu perdu.

merci d'avance
Nephi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2013, 16h57   #2
Nephi
Membre du Club
 
Homme Cédric Müller
Développeur application lié aux télécommunication
Inscription : juin 2008
Messages : 100
Détails du profil
Informations personnelles :
Nom : Homme Cédric Müller
Âge : 30
Localisation : France

Informations professionnelles :
Activité : Développeur application lié aux télécommunication
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juin 2008
Messages : 100
Points : 41
Points : 41
Je pense avoir trouvé la solution après une apres-midi d'essai et de galère
je test un trigger sur la table product apres update en utilisant la fonction merge . . . je vais vois ce que cela donne
a+
Nephi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2013, 10h30   #3
aieeeuuuuu
Expert Confirmé
 
Inscription : janvier 2010
Messages : 1 690
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 690
Points : 2 664
Points : 2 664
Bonjour,

Je pense que vous êtes partis dans la mauvaise direction, et un trigger ne me semble pas le plus adapté. A mon avis, cette colonne prix n'a rien à faire dans votre table Préparation. Vous devriez plutôt créer une vue pour vos préparations, indiquant le prix.

Cependant, avant ça, vous devriez revoir vos clef primaires : le NCHAR(13) n'est pas une bonne idée... à quoi correspondent les colonne idx ?
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 03h38.


 
 
 
 
Partenaires

Hébergement Web