blague avec un collègue, je suis venu avec un scénario intéressant: Est-il possible dans SQL Server de définir une table de sorte que par "moyens standard" (contraintes, etc.) je peux s'assurer que deux colonnes ou plus s'excluent mutuellement? Je veux dire par là: Est-ce que je peux m'assurer qu'une seule colonne contient une valeur?SQL-Server: Définir des colonnes comme mutuellement exclusives
Répondre
Oui, vous pouvez, en utilisant une contrainte CHECK:
ALTER TABLE YourTable
ADD CONSTRAINT ConstraintName CHECK (col1 is null or col2 is null)
par votre commentaire, si plusieurs colonnes sont exclusives, vous pouvez les vérifier comme ceci:
case when col1 is null then 0 else 1 end +
case when col2 is null then 0 else 1 end +
case when col3 is null then 0 else 1 end +
case when col4 is null then 0 else 1 end
= 1
Cela dit que l'un des quatre colonnes doivent contenir une valeur. Si elles peuvent toutes être NULL, vérifiez simplement <= 1
.
Ah oui, je peux voir où ça va. Cependant, la vérification serait beaucoup plus complexe si j'avais trois colonnes ou plus, car je devrais ajouter toutes les combinaisons possibles, n'est-ce pas? –
@Thorsten Dittmar: Il devient un peu plus complexe avec plusieurs colonnes, je pense que vous pouvez le faire sans ajouter toutes les combinaisons possibles, répondre édité – Andomar
Salut exigences correspond exactement à la même situation décrite ci-dessus, mais aussi col1 et col2 ne devraient pas être nul en même temps, seulement l'un d'eux doit toujours être peuplé .. Comment assurer cela? – MaxRecursion
- 1. Autorisations mutuellement exclusives dans J2ME
- 2. Valider la présence d'associations mutuellement exclusives
- 3. Comment créer des colonnes mutuellement exclusives dans une grille de données WPF?
- 4. SQLServer Calculer moyenne des colonnes multiples
- 5. Obtenir des champs qui existent mutuellement et non mutuellement dans la même table dans deux colonnes
- 6. CellEditors mutuellement exclusifs dans JTable
- 7. 2 "Listes" exclusives de RadioButton
- 8. UltraTree - définir des colonnes?
- 9. Interrogation de colonnes XML dans SQLServer 2005
- 10. avec SQLServer comme back-end
- 11. Python, SQL: Définir les colonnes lues comme paramètre
- 12. Mise en forme des dates SQLServer à utiliser comme comparaison
- 13. Nombre d'utilisateurs avec sessiontate défini comme sqlserver
- 14. comment définir des autorisations exclusives sur une bibliothèque de documents SharePoint?
- 15. Restriction des paires clé-valeur exclusives dans XSD
- 16. Comment définir des opérateurs de conversion implicites pour des enregistrements mutuellement dépendants?
- 17. Définir l'ordre des colonnes dans JTable
- 18. Créer une colonne mutuellement exclusive
- 19. fichiers mutuellement référencés .h?
- 20. SwiftSuspenders: classes "s'injectant mutuellement"?
- 21. Définir comme des constantes en Java
- 22. SQLServer joignent deux tables
- 23. Pages de publication multiples/exclusives Wordpress
- 24. Comment définir la largeur des colonnes dans datagridview
- 25. sqlserver 2008 triggers
- 26. SQLServer 2005 Générer tout INDEX comme instruction CREATE?
- 27. Définitions mutuellement récursives dans Clojure
- 28. Comment puis-je déclarer des classes qui se réfèrent mutuellement?
- 29. Evaluateur mutuellement récursif dans Haskell
- 30. SqlServer créer une table avec MySQL comme auto_increment clé primaire
Quel problème tentez-vous de résoudre? bases de données subnormales sont un PITA à travailler avec, peut-être vous pouvez le faire d'une manière qui ne sacrifie pas les goodies relationnels. –
Eh bien, il n'y a pas vraiment de problème derrière cette idée. Je voulais juste savoir s'il est techniquement possible de le faire. Une idée pourrait être l'exigence qu'un utilisateur peut soit entrer son propre nom ou le nom de l'entreprise, mais pas les deux. Je pense que je pourrais penser à quelque chose de mieux :-) –