clé primaire nvarchar(50) par concatenation
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:
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:
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 :D