Contraintes d'unicité sur 2 champs identiques

glebian Messages postés 1 Date d'inscription jeudi 24 novembre 2005 Statut Membre Dernière intervention 10 février 2011 - 10 févr. 2011 à 09:29
cs_hassane86 Messages postés 54 Date d'inscription mercredi 2 janvier 2008 Statut Membre Dernière intervention 2 août 2012 - 10 mars 2011 à 10:54
Bonjour,
j'ai une table avec 3 champs : Id, IdBT1,IdBT2
Cette table me permet d'avoir une liste de couples de BTS (grâce à IdBT1 et IdBT2).
J'aimerais créer une contrainte qui rend les couples unique dans les deux sens.
Exemple :
Id | BT1 | BT2
1 | 1 | 2
2 | 1 | 2 erreur quand on veut insérer cette ligne ça je sais faire
3 | 2 | 1 Dans ce cas je veux aussi que l'on interdise l'ajout car 1-2 ou 2-1 ça reste le même couple.

Comme je l'ai écris je sais gérer le cas ou l'on a BT1 et BT2 exactement pareil avec un index unique qui regroupe les deux champs mais cela ne gère pas mon 2eme cas. Avez vous une idée ou n'aurais je d'autre choix que de créer un trigger?

2 réponses

EricSQL Messages postés 33 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 24 février 2011
22 févr. 2011 à 20:06
Bonjour,

à la place d'un Trigger, tu peux faire un index fonction (supposé que SQL Server les supporte).

/Eric
0
cs_hassane86 Messages postés 54 Date d'inscription mercredi 2 janvier 2008 Statut Membre Dernière intervention 2 août 2012
10 mars 2011 à 10:54
Bonjour,
une petite proposition même si elle est conne mai sa peut marché.
bah tu fait la même chose que pour le premier cas (2 | 1 | 2), tu va faire une requête sql en inversion les 2 variable a la recherche :
if(($BT2 BT1) and ($BT1 BT2))
et en utilisant le mtsql_num_rows() si tu elle renvoi quelque chose tu interdit l'insertion, et si elle renvoi rien tu permet l'insertion .

j'espère que ma réponse est claire

Bon courage
0
Rejoignez-nous