web-dev-qa-db-fra.com

Contrainte SQL minvalue/maxvalue?

Existe-t-il un moyen de définir une contrainte SQL pour un champ numérique dans lequel la valeur minimale doit être de 1234 et la valeur maximale de 4523?

36
Shimmy

Syntaxe SQL Server pour la contrainte check :

create table numbers (
    number int not null
        check(number >= 1234 and number <= 4523),
    ...
)

create table numbers (
    number int not null,
    check(number >= 1234 and number <= 4523),
    ...
)

create table numbers (
    number int not null,
    constraint number_range_check
        check(number >= 1234 and number <= 4523),
    ...
)
42
yfeldblum
CREATE TABLE WhatEver
(
    ...
    NumericField INTEGER NOT NULL CHECK(NumericField BETWEEN 1234 AND 4523),
    ...
);

Notez que "ENTRE ET" fournit une plage incluant les valeurs limites citées.

11
Jonathan Leffler

Si vous utilisez SQL Server, vous souhaitez utiliser une contrainte CHECK comme celle-ci:

CREATE TABLE foo (
  someint INT NOT NULL CHECK (someint >= 1234 AND someint <= 4523)
)
1
steveschoon

Si vous utilisez SQL Server avec SQL Server Management Studio, le moyen le plus pratique d'ajouter une contrainte de vérification consiste à cliquer avec le bouton droit de la souris sur le dossier Contraintes dans la vue d'arborescence (Explorateur d'objets), puis à sélectionner Nouvelle contrainte dans le menu contextuel.

Une fenêtre Vérifier la contrainte apparaît avec une nouvelle contrainte vide nommée CK_tableName *.

Vous pouvez éditer un tel nom proposé et insérer le code de la contrainte de vérification dans le champ Expression.

Ensuite, la nouvelle contrainte apparaît dans le dossier Contrainte (après avoir sélectionné le dossier et cliqué sur l'icône d'actualisation) dans l'Explorateur d'objets. Vous pouvez l'éditer en cliquant dessus, puis en sélectionnant Modifier dans le menu contextuel.

0
Fry Simpson