Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Trigger UPDATED sur plusieurs champs [ SQL Server, MSDE, SQL Express / Débutant(s) ] (Maroxye)

lundi 2 avril 2007 à 15:53:31 | Trigger UPDATED sur plusieurs champs

Maroxye

Bonjour!

Je débute en SQL et je fois faire un TRIGGER sur l'ajout, la suppression et la modification de certains champs dans une table. Lorsque ces 3 opérations surviennent, j'ajoute l'information dans une nouvelle table(M=modification, A=Ajout, S=suppression + usager ayant fait la modif +date et heure). Pour l'ajout et la suppression, pas de problèmes. C'est pour la modif qu'il y en a un.

Voici mon code :

***************************************************
CREATE TRIGGER item_updated
ON item
FOR UPDATE
AS
DECLARE
@AncienneValeur VARCHAR(100),
@NouvelleValeur VARCHAR(100),
@NomChamp VARCHAR(100)

IF UPDATE(description)
  BEGIN
  SELECT @AncienneValeur = (SELECT description FROM Deleted)
  SELECT @NouvelleValeur = (SELECT description FROM Inserted)
  SELECT @NomChamp = "Description"
  END

  IF UPDATE(revision)
    BEGIN
    SELECT @AncienneValeur = (SELECT revision FROM Deleted)
    SELECT @NouvelleValeur = (SELECT revision FROM Inserted)
    SELECT @NomChamp = "Revision"
    END

INSERT INTO item_trigger ( Date_modif,Type_modif,Nom_table, Nom_champ, Ancienne_info, Nouvelle_info, Nom_usager)
SELECT CURRENT_TIMESTAMP, "M", "item", @NomChamp, @AncienneValeur, @NouvelleValeur, UpdatedBy from inserted item

***************************************************

Le problème est que si quelqu'un modifie 2 champs en même temps, seulement une ligne s'ajoute à ma table(il ne tient pas compte de toutes les opérations en même temps). J'imagine qu'il me faudrait une table temporaire ou un curseur???Et si oui, où le placer?

Merci à l'avance de votre aide, je suis vraiment bloqué!


Isabelle


vendredi 26 octobre 2007 à 00:42:58 | Re : Trigger UPDATED sur plusieurs champs

asmaa17


salut isabelle,
essaye ce code:
--inserer la clause insert into à l'interieur de chaque  if update
CREATE TRIGGER item_updated
ON item
FOR UPDATE
AS
DECLARE
@AncienneValeur VARCHAR(100),
@NouvelleValeur VARCHAR(100),
@NomChamp VARCHAR(100)

IF UPDATE(description)
  BEGIN
  SELECT @AncienneValeur = (SELECT description FROM Deleted)
  SELECT @NouvelleValeur = (SELECT description FROM Inserted)
  SELECT @NomChamp = "Description"
---insertion d'information
INSERT INTO item_trigger ( Date_modif,Type_modif,Nom_table, Nom_champ, Ancienne_info, Nouvelle_info, Nom_usager)
SELECT CURRENT_TIMESTAMP, "M", "item", @NomChamp, @AncienneValeur, @NouvelleValeur, user_name(1)
 from inserted ---updateby( ne fonction pas sous sql server 2000)
  END

  IF UPDATE(revision)
    BEGIN
    SELECT @AncienneValeur = (SELECT revision FROM Deleted)
    SELECT @NouvelleValeur = (SELECT revision FROM Inserted)
    SELECT @NomChamp = "Revision"
---insertion d'information
INSERT INTO item_trigger ( Date_modif,Type_modif,Nom_table, Nom_champ, Ancienne_info, Nouvelle_info, Nom_usager)
SELECT CURRENT_TIMESTAMP, "M", "item", @NomChamp, @AncienneValeur, @NouvelleValeur, user_name(1)
from inserted 
    END



la vie ne donne pas des cadeaux




Cette discussion est classé dans : table, item, select, from, trigger


Répondre à ce message

Sujets en rapport avec ce message

Génération de graphiques [ par pillsmen ] Bonjour à tous,Mon problème concerne la génération d'un graphique dans un état sous ACCESS.On va commencer par le commencement ^^, je pense qu'un exem selection d'une fraction d'une table [ par nicotom ] Bonjour,Je cherche a réaliser un select qui me renverais que 10 résultats.Pour cela je'utilise le "LIMIT = 10".Par contr j'aimerais qu'au select suiva Update Mysql Table from csharp datagridview [ par olibara ] BonjourSoit ma question erst tellement idiorte que personne ne veut y repondre soit personne ne connait la reponseJe cherche un petit tutorial  simple trigger [ par yalk1960 ] Je voudrais copier une table SCH_website_xml dans une nouvelle table journal_update, qui crée un champ date de création pour chaque fois que le update alignement d'éléments par rapport aux données [ par desperados27 ] Bonjour,En résumé, j'ai fait 4 ListBox.Chacune correspond à une colonne de la même table. (Donc 4 colonnes)J'aimerais aligner les éléments affichés da requete insert avec select!! [ par othland ] Bonjour tout le monde!je dois inserer un tuple dans ma table T1 dont un element doit être tiré par un select d'une autre table T2, or je n'arrive pas 2 select dans une même requête [ par satsumy ] Bonjour,Voila j'ai une grosse requête à faire en fonction de plusieurs paramètres d'entrée.J'ai une table mission(idmission, date, heure, ...),une tab Problème de join sur Access [ par Panthouffle ] Bonjour, je dois faire un join entre deux tables, cependant, il n'y a aucun champ comun entre ces deux tables, je dois passer par une table pour compl select sur une liste de clef [ par JulienOrion666 ] Bonjour, Voila j'ai une liste de clef correspondant a des personnes d'une table et je veux tous les selectioner je les ai ds un tableau et quand je l Nom d'une colonne [ par NoOneElse ] salut,je développe une application de traçage d'une base de donnée Oracle où je peut crée des TRIGGER a partir d'un nom d'une table existe dans la bas


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.