Précédent   Forum des professionnels en informatique > 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 Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/05/2008, 16h37   #1
Invité de passage
 
Inscription : décembre 2007
Messages : 18
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 18
Points : 4
Points : 4
Par défaut [Résolu] Trigger vérification valeur à l’insertion – best practice ?

Bonjour,

J’ai une table contenant 2 champs : [A] nvarchar(10) , [B] nvarchar(10)

Lorsque j’ajoute un enregistrement , si le champ [A] = « toto » je veux affecter « titi » au champ [B].

Quelle est la bonne pratique ? instead of ? update des inserted ?
Bronks59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2008, 19h49   #2
Membre Expert
 
Inscription : août 2002
Messages : 1 249
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 1 249
Points : 1 512
Points : 1 512
Envoyer un message via Yahoo à ylarvor
Citation:
J’ai une table contenant 2 champs : [A] nvarchar(10) , [b] nvarchar(10)

Lorsque j’ajoute un enregistrement , si le champ [A] = « toto » je veux affecter « titi » au champ [b].

Quelle est la bonne pratique ? instead of ? update des inserted ?
En tout état de cause, INSTEAD OF permet de faire tout ce que tu veux.

concernant l'update de inserted... je ne suis pas sûr que ca marche... teste le et donne nous le resultat...

en savoir plus : http://blog.developpez.com/index.php...ger_instead_of
ylarvor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2008, 16h45   #3
Invité de passage
 
Inscription : décembre 2007
Messages : 18
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 18
Points : 4
Points : 4
on ne peux pas mettre a jour les inserted..
Bronks59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2008, 17h03   #4
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 792
Points : 17 792
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TRIGGER E_I_MATABLE
ON MATABLE
FOR INSERT
AS
 
UPDATE MATABLE
SET B = 'titi'
FROM MATABLE T
    INNER JOIN inserted i
            ON T.ColClef1 = i.ColClef1 AND T.ColClef2 = i.ColClef2 AND ...
WHERE T.A = 'toto'
 
GO
Cela dit c'est pas du tout une BEST PRATICTICE.... En effet l'usage des trigger est ce qu'il y a de plus couteux.
La bonne solution est d'inverser la vapeur et donc de modifier la données avant l'insertion. Or SQL Server n'a pas de trigger BEFORE.
Cependant tu peut utiliser un trigger INSTEAD OF.
Pour ma part je trouve plus pratique de détourner les INSERT vers des procédures de type P_INSERT dans lesquelles je fait ce que je veux avant l'insertion et d'interdire l'INSERT direct dans la table par le biais des privilèges (sachant qu'un INSERT dans une proc stock est dépersonalisé).

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2008, 12h29   #5
Invité de passage
 
Inscription : décembre 2007
Messages : 18
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 18
Points : 4
Points : 4
ok merci
Bronks59 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 01h03.


 
 
 
 
Partenaires

Hébergement Web