contrainte unique sur un ensemble
-
30-10-2019 - |
Question
En référence à cela So Question, quelle serait une façon correcte de mettre en œuvre Contrainte de combinaison de balises unique Dans SQL Server 2005?
Pour illustrer le problème, je fais un exemple:
Un tag_bundle se compose d'une ou plusieurs balises. Une combinaison de balises unique peut mapper à un tag_bundle unique, vice versa.
tag_bundle tag tag_bundle_relation
+---------------+ +--------+ +---------------+--------+
| tag_bundle_id | | tag_id | | tag_bundle_id | tag_id |
+---------------+ +--------+ +---------------+--------+
| 1 | | 100 | | 1 | 100 |
+---------------+ +--------+ +---------------+--------+
| 2 | | 101 | | 1 | 101 |
+---------------+ +--------+ +---------------+--------+
| 102 | | 2 | 101 |
+--------+ +---------------+--------+
| 2 | 102 |
+---------------+--------+
Il ne peut pas y avoir un autre tag_bundle ayant exactement la même combinaison de Tag 100 et Tag 101. Il ne peut pas y avoir un autre tag_bundle ayant exactement la même combinaison de Tag 101 et TAG 102.
Comment puis-je assurer une telle contrainte unique lors de l'exécution de SQL "simultanément"!! c'est-à-dire pour éviter simultanément Ajout de deux faisceaux avec exactement le même combinaison de balises
L'ajout d'une simple contrainte unique sur n'importe quelle table ne fonctionne pas, y a-t-il une solution autre que le verrouillage de déclenchement ou explicite.
Je viens uniquement de cette manière simple: transformez la combinaison de balises en chaîne, et laissez-la être une colonne unique.
tag_bundle (unique on tags) tag tag_bundle_relation
+---------------+-----------+ +--------+ +---------------+--------+
| tag_bundle_id | tags | | tag_id | | tag_bundle_id | tag_id |
+---------------+-----------+ +--------+ +---------------+--------+
| 1 | "100,101" | | 101 | | 1 | 101 |
+---------------+-----------+ +--------+ +---------------+--------+
| 100 | | 1 | 100 |
+--------+ +---------------+--------+
Mais ce n'est pas un bon moyen :(
N'y a-t-il pas d'autre solution que avec des déclencheurs?
Pas de solution correcte