web-dev-qa-db-fra.com

Vérifiez la contrainte sur plusieurs colonnes

J'utilise SQL Server 2008

J'utilise une contrainte de contrôle sur plusieurs colonnes dans la même table pour tenter de valider la saisie de données.

Je reçois une erreur:

Vérification de la colonne Contrainte pour la colonne 'AAAA' Références Une autre colonne, Table 'XXXX'.

Vérifiez que la contrainte ne fonctionne pas de cette manière.

Tout autre moyen de la mettre en œuvre sur une seule table sans utiliser FK?

Merci

Voici un exemple de mon code

CREATE TABLE dbo.Test 
(   
EffectiveStartDate  dateTime2(2)        NOT NULL,
EffectiveEndDate    dateTime2(2)        NOT NULL
    CONSTRAINT CK_CmsSponsoredContents_EffectiveEndDate CHECK (EffectiveEndDate > EffectiveStartDate),
);
22
GibboK

Oui, définissez la contrainte de contrôle au niveau Table niveau

CREATE TABLE foo (
   bar int NOT NULL, 
   fred varchar(50) NOT NULL,

   CONSTRAINT CK_foo_stuff CHECK (bar = 1 AND fred ='fish')
)

Vous la déclarez en ligne sous forme de contrainte colonne

...
fred varchar(50) NOT NULL CONSTRAINT CK_foo_fred CHECK (...)
...

Éditer, plus facile à poster que de décrire. Correction de vos virgules.

CREATE TABLE dbo.Test 
(   
  EffectiveStartDate  dateTime2(2)        NOT NULL,
  EffectiveEndDate    dateTime2(2)        NOT NULL,  --need comma
  CONSTRAINT CK_CmsSponsoredContents_EffectiveEndDate CHECK (EffectiveEndDate > EffectiveStartDate) --no comma
);

Bien sûr, la question reste-t-elle à l'aide d'une contrainte de contrôle dans laquelle il devrait être une contrainte FK ...?

47
gbn

Vous pouvez simplement appliquer votre validation dans une gâchette sur la table, notamment que l'opération sera renvoyée si le chèque a échoué.

1
Mostafa Elmoghazi