|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre chevronné
![]() Inscription : mars 2006 Messages : 643 ![]() |
Bonjour,
J'ai 2 tables l'une FL_Risque contient notamment un code "formule" et l'autre fl_garantiesrisque les lignes de garanties correspondantes à cette formule. Le trigger FL_Risque Code :
Par contre je peux choisir d'insérer, modifier ou supprimer directement depuis la table fl_garantiesrisque et dans ce cas je veux juste mettre à jour (par un trigger) le code "formule" dans FL_Risque mais sans déclencher le trigger de celle-ci. Comment faire ? peux t'on savoir quel événement à déclenché le trigger ? j'utilise et Code :
ALTER TABLE fl_risque DISABLE TRIGGER ALL et le disable trigger semble perturber le programme.
__________________
Have a nice day. ![]() Oliv' OUI à l'utilisation, NON au « copillage » Merci de citer la source |
||
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Inscription : mars 2006 Messages : 643 ![]() |
Question complémentaire, quand je fais un
Code :
ALTER TABLE fl_risque DISABLE TRIGGER ALL
__________________
Have a nice day. ![]() Oliv' OUI à l'utilisation, NON au « copillage » Merci de citer la source |
|
|
00
|
|
|
#3 |
![]() ![]() ![]() David BARBARINExpert SQL Server Inscription : août 2005 Messages : 3 723 ![]() |
Bonjour,
Pourquoi ne pas ajouter une colonne suppémentaire dans la table FL_Risque nommée par exemple origine avec deux valeurs possibles : 0 ou 1 ou les noms des table d'origine ('FL_Risque' et 'fl_garantiesrisque') avec par défaut la valeur 'FL_Risque'. Il suffit ensuite de se baser sur cette valeur pour déclencher ou non votre premier trigger. L'idée de désactiver le trigger est valable pour toute la table et peut poser des soucis dans l'intégrité de vos données .. ++ |
|
00
|
|
|
#4 |
|
Membre chevronné
![]() Inscription : mars 2006 Messages : 643 ![]() |
Merci pour cette idée mais je n'ai pas la possibilité de modifier cette table, dont la définition est faite par l'éditeur du progiciel.
__________________
Have a nice day. ![]() Oliv' OUI à l'utilisation, NON au « copillage » Merci de citer la source |
|
|
00
|
|
|
#5 |
![]() ![]() ![]() David BARBARINExpert SQL Server Inscription : août 2005 Messages : 3 723 ![]() |
L'ajout d'une colonne à une table ne devrait en principe poser aucun problème (règle no9 de Codd) si l'application est bien modélisée.
++ |
|
00
|
|
|
#6 |
|
Membre chevronné
![]() Inscription : mars 2006 Messages : 643 ![]() |
J'ai déjà eu le cas lors d'une mise à jour, la colonne avait disparu après.
Peut on connaitre le declencheur du trigger ?
__________________
Have a nice day. ![]() Oliv' OUI à l'utilisation, NON au « copillage » Merci de citer la source |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() |
Évidemment, c'est le problème des montées de version des progiciel, rien ne vous empêche de garder un script à passer après chaque mise à jour de votre progiciel permettant de revenir à votre modélisation "maison".
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
00
|
|
|
#8 | |
|
Membre Expert
![]() |
Citation:
Pouvez vous modifier le TRIGGER que "vous ne voulez pas déclencher"? Si c'est le cas testez si vous pouvez le modifier afin qu'il ne fasse rien dans le cas de la seule mise à jour de la colonne formule? Le TRIGGER n'est pas là pour rien par définition, pouquoi ne voulez vous pas q'uil se déclenche?
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
|
00
|
|
|
#9 | |
|
Membre chevronné
![]() Inscription : mars 2006 Messages : 643 ![]() |
Citation:
quelle est la syntaxe pour vérifier que c'est la seule colonne modifiée ?
__________________
Have a nice day. ![]() Oliv' OUI à l'utilisation, NON au « copillage » Merci de citer la source |
|
|
|
00
|
|
|
#10 | |||
|
Membre Expert
![]() |
Citation:
Code :
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|||
|
|
00
|
|
|
#11 | ||||||||
|
Membre chevronné
![]() Inscription : mars 2006 Messages : 643 ![]() |
J'ai trouvé et adapté un code de Piotr Rodak
il faut créer une table Code :
Code :
Code :
Code :
__________________
Have a nice day. ![]() Oliv' OUI à l'utilisation, NON au « copillage » Merci de citer la source |
||||||||
|
|
00
|
|
|
#12 | ||
|
Membre chevronné
![]() Inscription : mars 2006 Messages : 643 ![]() |
Alors du coup je me dit que je vais la convertir en fonction mais le résultat est différent une idée ?
Code :
c'était ma variable varbinary où il manquait la taille (32) car 254 colonnes max
__________________
Have a nice day. ![]() Oliv' OUI à l'utilisation, NON au « copillage » Merci de citer la source |
||
|
|
00
|
|
|
#13 |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 667 ![]() |
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
00
|
|
|
#14 | ||
|
Membre chevronné
![]() Inscription : mars 2006 Messages : 643 ![]() |
J'ai bien étudié cette fonction, si tu as une façon de l'utiliser plus efficace je suis preneur.
Je veux savoir si ma colonne flor_formule_id a été mise à jour et si c'est la seule ? ce qui me donne au final Code :
__________________
Have a nice day. ![]() Oliv' OUI à l'utilisation, NON au « copillage » Merci de citer la source |
||
|
|
00
|
|
|
#15 | |||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Citation:
Code SQL :
|
|||
|
|
00
|
|
|
#16 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
... ou aussi :
Code SQL :
|
||
|
|
00
|
|
|
#17 | ||||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 667 ![]() |
Désolé de revenir tardivement sur ce sujet.
Pour moi la première solution ne marche pas, mais la seconde fonctionne parfaitement. En revanche je ne comprend pas pourquoi cela fonctionne ![]() Pour moi : Code :
COLUMNS_UPDATED() = ( SELECT COLUMNS_UPDATED() & COLUMNPROPERTY( ![]() On peut m'expliquer ? Sinon, on peut aussi écrire la condition comme suit : Code :
Code :
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
||||
|
00
|
|
|
#18 | |||||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bah... tant que ça fonctionne
Citation:
Citation:
Citation:
Pourtant ta solution est la même, à l'exception de la méthode de récupération de l'ID de colonne.... Je ne comprend pas non plus pourquoi la première solution en fonctionne pas chez toi... peux tu poster tes scripts de test afin que je le lance chez moi ? |
|||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com