Bonsoir!
Je souhaiterais fabriquer des clé primaire à partir de la concatenation de deux champs de la même table (PANIER).

Cette table est composé de trois collone :
1 - ID
2 - PANIER_NOM
3 - USER_ID (qui est le résultat de la commande USER_NAME(USER_ID))

Le fait d'avoir comme clé primaire la concaténation du nom de mon panier + l'indentifiant utilisateur me permettrais qu'il n'existe pas deux panier avec le meme nom.

Pour cela j'ai créer un trigger :
Code : 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
 
ALTER TRIGGER [testconctat] 
ON [dbo].[PANIER]
 
FOR INSERT, UPDATE
AS 
DECLARE @panierId nvarchar(50),@nomPanier nvarchar(50), @userId nvarchar(50);
 
select @userId = user_ID from INSERTED;
select @nomPanier = PANIER_NOM from INSERTED;
select @panierId = @userId + @nomPanier;
 
BEGIN 
UPDATE dbo.PANIER  set PANIER_ID=@panierId 
where PANIER_NOM in (select PANIER_NOM from inserted)
END
dès lors que je veux créer une nouvelle entrée SQL SERVER m'envoie gentillement boulé en me disant qu'une clé primaire ne peu avoir de valeur nulle.

Or si je fait ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
insert into PANIER(PANIER_ID,PANIER_NOM) values ('uncaratere','monpanier')
select * from PANIER
Ca marche
Peut pourriez vous me dire quelle est mon erreur?
Merci d'avance