Pouvez VÉRIFIER les contraintes d'agir comme si d'autre?
J'ai un tableau avec 4 colonnes (ID (PK, int not NULL), col1 (NULL), col2 (NULL), col3 (NULL))
Id tiens à ajouter une contrainte de VÉRIFICATION (au niveau de la table, je pense?) de sorte que:
if col1 OR col2 are NOT NULL then col3 must be NULL
et
si col3 n'est PAS NULLE alors col1 ET col2 doit être NULL
c'est à dire col3 doit être null si col1 et col2 sont pas null ou vice-versa
Je suis très nouveau à SQL et SQL server bien et ne suis pas sûr de la façon de mettre en œuvre la présente, ou même si elle peut/doit être mis en œuvre?
Je pense peut-être:
CHECK ( (col1 NOT NULL OR col2 NOT NULL AND col3 NULL) OR
(col3 NOT NULL AND col1 NULL AND col2 NULL) )
Mais je ne suis pas sûr si les parenthèses peuvent être utilisées pour le groupe de la logique comme ça?
Si non, comment peut-il mis en œuvre?
Non, mes tableaux sont sur un serveur avec beaucoup d'autres choses que l'utilise, donc je ne veux pas de vis les choses :O
Vous n'avez pas d'équivalent d'un environnement de développement?
Nope, n'ont pas un moyen d'en créer un ici non plus, sinon c'est comment j'aurais commencé (aussi comme je l'ai dit je suis très nouveau à SQL et ne savez par où commencer configuration de SQL server ou DB à partir de zéro)
Oui, vous pouvez le faire, mais une chose qui attire les gens hors - si vous le créer, et, plus tard, de générer un script à partir de l'objet, votre bracketing et la mise en page peut avoir un aspect différent. Je ne suis pas sûr exactement comment ils sont stockés, mais ce n'est pas comme une chaîne de caractères, et donc quand une chaîne est re-généré, seuls les supports qui sont strictement nécessaires.
SQL Server Developer Edition coûte 60 $si vous achetez directement à partir de MS (vous pouvez le trouver moins cher ailleurs - 50 $sur Newegg, encore moins sur Amazon), et vous pouvez l'installer sur votre poste de travail. Vous besoin un environnement de non-production d'apprendre et de tester des choses.
Vous n'avez pas d'équivalent d'un environnement de développement?
Nope, n'ont pas un moyen d'en créer un ici non plus, sinon c'est comment j'aurais commencé (aussi comme je l'ai dit je suis très nouveau à SQL et ne savez par où commencer configuration de SQL server ou DB à partir de zéro)
Oui, vous pouvez le faire, mais une chose qui attire les gens hors - si vous le créer, et, plus tard, de générer un script à partir de l'objet, votre bracketing et la mise en page peut avoir un aspect différent. Je ne suis pas sûr exactement comment ils sont stockés, mais ce n'est pas comme une chaîne de caractères, et donc quand une chaîne est re-généré, seuls les supports qui sont strictement nécessaires.
SQL Server Developer Edition coûte 60 $si vous achetez directement à partir de MS (vous pouvez le trouver moins cher ailleurs - 50 $sur Newegg, encore moins sur Amazon), et vous pouvez l'installer sur votre poste de travail. Vous besoin un environnement de non-production d'apprendre et de tester des choses.
OriginalL'auteur Toby | 2013-08-09
Vous devez vous connecter pour publier un commentaire.
Absolument, vous pouvez le faire. Voir ce sqlfiddle.
Cependant, vous devez vous assurer de support de votre logique correctement. Vous devriez jamais mélange ANDs et Rup dans le même bracketing de la portée. Donc:
Doit devenir:
Ou:
Selon votre intention.
mais il va vérifier à la fois la condition signifie vice-versa ??
Tu veux sans doute dire à souligner que la logique devrait être tout simplement
( (col1 NOT NULL AND col2 NOT NULL AND col3 NULL) OR (col3 NOT NULL AND col1 NULL AND col2 NULL) )
. Le problème, c'est qu'il va toujours faire valoir ce que decol1
etcol2
avoir le même état. Je pense que l'OP exprès de ne pas le faire parce quecol3
doit être NULL si decol1
oucol2
ne sont PAS NULL.Correct, Col3 doit être null si de col1 ou col2 sont pas null. Mais col1 et col2 devrait être null ou not null ensemble - mais je peux appliquer cette application côté que sinon je pense que la contrainte à ce sujet et col3 devient un peu plus complexe
OriginalL'auteur PinnyM
Juste faire attention de ne pas faire d'erreur avec des crochets.
OriginalL'auteur Nenad Zivkovic
Je dirais créer un fichier UDF comme ci-dessous
puis ajouter à cocher suivantes déclaration dans votre tableau
vous avez raison ... j'ai juste essayé d'expliquer ce qui peut être fait
OriginalL'auteur Dhaval