Bonjour à tous

Voilà, je travaille sur MS SQL Server 2000, et j'ai un souci sur un trigger. Il se déclenche sur l'insertion d'une salle. Le contexte grosso modo, c'est que, à la création de cette salle, et si cette salle n'est pas en travaux (booléen enTravaux), ce trigger doit également lui affecter des équipements particuliers (tables, chaises...). Pour cela, j'ai créé une table AFFECTER, qui définit quels équipements vont dans quelles types de salle, et en quelle quantité, et la table INSTALLER, qui donne, pour chaque salle, les équipements installés.

Voici le trigger :

Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
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
39
40
41
42
43
44
45
46
CREATE TRIGGER affect_mat
ON SALLE
FOR INSERT
AS
DECLARE
	@noSalle int,
	@typeSalle int,
	@nbPlaces int,
	@enTravaux bit,
	@nbTypesMat int,
 
	/*Variables pour le curseur*/
	@codeMat int,
	@nbDefault varchar(10)
BEGIN
	SELECT @noSalle = noSalle, @typeSalle = typeSalle, @nbPlaces = nbPlaces, @enTravaux = enTravaux FROM inserted;
	IF(@enTravaux = 0)		/*On vérifie que la salle est prête à l'emploi*/
	BEGIN
		/*On déclare un curseur pour parcourir l'ensemble des matériels à installer*/
		DECLARE curs_matAffect CURSOR FOR
		SELECT codeMat, nbDefault FROM AFFECTER WHERE codeType = @typeSalle;
		OPEN curs_matAffect
		FETCH NEXT FROM curs_matAffect INTO @codeMat, @nbDefault
		WHILE(@@FETCH_STATUS = 0)
		BEGIN
			IF(@nbDefault = 'nbPlaces')
			BEGIN
				INSERT INTO INSTALLER VALUES(@codeMat, @noSalle, @nbPlaces);
			END
			ELSE IF(@nbDefault = 'nbPlaces/2')
			BEGIN
				INSERT INTO INSTALLER VALUES(@codeMat, @noSalle, @nbPlaces / 2);
			END
			ELSE
			BEGIN
				INSERT INTO INSTALLER VALUES(@codeMat, @noSalle, CONVERT(int, @nbDefault));
			END
			FETCH NEXT FROM curs_matAffect INTO @codeMat, @nbDefault
		END
		CLOSE curs_matAffect
		DEALLOCATE curs_matAffect
		INSERT INTO EVENEMENT VALUES (getdate(), 'INSTALLER', 'Installation de matériel dans la salle ' + @noSalle);
	END
	/*Insertion dans l'historique*/
	INSERT INTO EVENEMENT VALUES(getdate(), 'SALLE', 'Création de la salle ' + @noSalle);
END

Et lors de la création d'une salle, il me marque l'erreur suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Erreur de syntaxe lors de la conversion de la valeur varchar 'Installation du matériel' vers une colonne de type de données int.
Or, j'ai pu déterminer que l'erreur ne vient pas de l'insertion dans la table EVENEMENT(id, heure, table, message), mais des insertions dans la table INSTALLER(noSalle, codeMat, nbMatInstalles). De plus, j'ai bien vérifié mes types de données, je n'utilise que des int dans la fameuse insertion.

Voilà, j'espère avoir été assez précis sur l'erreur et le contexte, et que vous pourrez m'aider.

Merci d'avance