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 31/05/2011, 09h28   #1
Invité régulier
 
Inscription : octobre 2008
Messages : 17
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France

Informations forums :
Inscription : octobre 2008
Messages : 17
Points : 7
Points : 7
Par défaut mise à jour de table par un trigger

Bonjour,

Après le mise à jour d'un enregistrement dans une table A, j'aimerai pouvoir envoyer par trigger les données de cet enregistrement vers une table d'historisation.
Il me semble pouvoir utiliser la table inserted mais je ne connais pas la syntaxe.

Quelle est mon erreur ?
Merci

Voici ce que je tente de faire.
------------------------------------------
Code :
1
2
3
4
5
6
7
8
9
10
CREATE TRIGGER [dbo].[insert_DataCompDatMax]
 
ON [dbo].[DataComp]
AFTER INSERT AS
 
BEGIN
    INSERT INTO dbo.DataCompDatMax (DCDatEffDatComp,DCCodeComposant)
    VALUES(inserted.DCDatEffDatComp,inserted.DCCodeComposant)
    FROM inserted
END;
smaugy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2011, 09h40   #2
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 669
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 669
Points : 8 729
Points : 8 729
Bonjour,

Voici la syntaxe correcte :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE TRIGGER [dbo].[insert_DataCompDatMax]
	ON [dbo].[DataComp]
AFTER INSERT
AS
BEGIN
	SET NOCOUNT ON
 
	INSERT	INTO dbo.DataCompDatMax 
	(
		DCDatEffDatComp
		, DCCodeComposant
	)
	SELECT	DCDatEffDatComp
		, DCCodeComposant
	FROM	INSERTED
END
La clause VALUES vous permet d'insérer un tuple ou une liste de tuples que vous spécifiez (vous les codez "en dur"), donc elle ne fonctionne pas ici.

@++
__________________
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
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2011, 10h08   #3
Invité régulier
 
Inscription : octobre 2008
Messages : 17
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France

Informations forums :
Inscription : octobre 2008
Messages : 17
Points : 7
Points : 7
Par défaut Remerciement

Merci beaucoup pour la réponse et pour la rapidité avec laquelle vous avez répondu.
Je vais tout de même un peu potasser ça.
Bonne journée.
smaugy 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 17h32.


 
 
 
 
Partenaires

Hébergement Web