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

Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top