comment fonctionne trigger instead of insert ?
	
	
		Salut 
j'ai créé un trigger sur une table afin de ne pas enregistrer une requête qui comprend le prénom 'test'
voila ma table
personne (idp, nom, prenom)
et voila mon trigger :
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 
 | create trigger tt on personne instead of insert as 
begin
 
if (select prenom from inserted) = 'test' 
begin
  print 'erreur'
  rollback -- afin de stopper l'enregistrement
end
 
else
begin
  print 'ok'
end
 
end | 
 après j'ai testé cette requête :
insert into personne values(2, 'hhlkjh', 'jkhkh') 
en l'exécutant ça m'affiche ok, une ligne affectée
mais quand je fait "select * from personne" l'enregistrement n'y pas !!!! c'est comme s'il est ignoré ....
comment résoudre ce problème svp ?
merci d'avance
	 
	
	
	
		Autre question sur les Triggers INSTEAD OF INSERT
	
	
		Bonjour,
Je ne vois pas comment créer dans une table de manière performante une colonne qui est calculée automatiquement à l'insert d'un nouvel élément à partir du dernier élément inséré.
Je m'explique: j'aimerais  comme dans l'exemple suivant calculer automatiquement la colonne "Somme" à chaque nouvel insert, sachant que je ne ferai jamais de supression et donc ce calcul peut être persistent...
Exemple lors de l'ajout du 4eme element:
Table avant insert:
ID      Val          Somme
1        0.5         0.5
2        0.1         0.6
3        1.2         1.8
4        0.5         ???????
Je pensais partir sur une colonne calculée ou un trigger INSTEAD OF...
Pourriez-vous me donner votre avis?
Merci!
	 
	
	
	
		J'ai fini par faire un trigger...
	
	
		
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 
 | CREATE TRIGGER TriggerCalcEvolution
ON dbo.Games
INSTEAD OF INSERT AS
BEGIN
	--Création d'une variable pour calculer ma colonne 'Somme'
	DECLARE @NewCash AS real
 
	--Si je n'ai aucun enregistrement, je somme mes 2 valeurs CashWin et CashLoose
	SET @NewCash=(SELECT TOP(1) CashWin+CashLoose FROM Inserted)
	-- Si j'ai déjà des enregistrements, je récupère mon précédent calcul
	IF 0<(SELECT count(SessionID) FROM Games )
		SET @NewCash=(SELECT TOP(1) Cash+@NewCash FROM Games ORDER BY SessionID DESC)
 
	--J'insere finallement tous les champs d'origine + celui que je viens de calculer
	INSERT INTO Games WITH (TABLOCK)
	(
		SessionID,
		Occurtime,
		Opponent,
		GameType,
		DiceCube,
		CashWin,
		CashLoose,
		Cash
	)
	SELECT
		TOP (1) SessionID,
		Occurtime,
		Opponent,
		GameType,
		DiceCube,
		CashWin,
		CashLoose,
		@NewCash
	FROM
		Inserted
	ORDER BY SessionID DESC
END | 
 May it help!