Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/12/2010, 19h56   #1
Futur Membre du Club
 
Inscription : juin 2009
Messages : 50
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 50
Points : 17
Points : 17
Par défaut [SQL SERVER 2008 R2] Contrainte CHECK

Bonsoir à tous, voila je suis entrain de developpez un petite application (Video Club Manager) avec C# sous Visual Studio 2010 qui intéragie avec MS SQL Server 2008 R2.
Lors de la création de la BD j'ai voulu ajoute la contrainte check suivante
Code :
ALTER TABLE DVD ADD CONSTRAINT c CHECK (type IN ('Film','Serie','Clip','Documentaire','Autre'));
et voila l'erreur:
Code :
1
2
3
Major Error 0x80040E14, Minor Error 25501
> ALTER TABLE DVD ADD CONSTRAINT c CHECK (type IN ('Film','Serie','Clip','Documentaire','Autre'))
There was an error parsing the query. [ Token line number = 1,Token line offset = 34,Token IN error = CHECK ]
voila quelque captures:



nadjibnet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 20h41   #2
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 138
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 138
Points : 2 466
Points : 2 466
Envoyer un message via Yahoo à zinzineti
Essaye avec l'option WITH NOCHECK

Code :
ALTER TABLE DVD WITH NOCHECK ADD CONSTRAINT c CHECK (type IN ('Film','Serie','Clip','Documentaire','Autre'));
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 16h56   #3
Futur Membre du Club
 
Inscription : juin 2009
Messages : 50
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 50
Points : 17
Points : 17
Citation:
Envoyé par zinzineti Voir le message
Essaye avec l'option WITH NOCHECK

Code :
ALTER TABLE DVD WITH NOCHECK ADD CONSTRAINT c CHECK (type IN ('Film','Serie','Clip','Documentaire','Autre'));
merci mais toujours rien:

Code :
1
2
3
Major Error 0x80040E14, Minor Error 25501
> ALTER TABLE DVD WITH NOCHECK ADD CONSTRAINT c CHECK (type IN ('Film','Serie','Clip','Documentaire','Autre'))
There was an error parsing the query. [ Token line number = 1,Token line offset = 17,Token IN error = WITH ]
nadjibnet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 16h58   #4
Futur Membre du Club
 
Inscription : juin 2009
Messages : 50
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 50
Points : 17
Points : 17
j'ai aussi essayé la contrainte "clé étrangère" ça marche pas !!!

Code :
ALTER TABLE location ADD constraint fk_numcarte FOREIGN KEY num_carte REFERENCES client(num_carte) ON DELETE cascade;
Code :
1
2
3
Major Error 0x80040E14, Minor Error 25501
> ALTER TABLE location ADD constraint fk_numcarte FOREIGN KEY num_carte REFERENCES client(num_carte) ON DELETE cascade
There was an error parsing the query. [ Token line number = 1,Token line offset = 61,Token IN error = num_carte ]
nadjibnet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 23h11   #5
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 138
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 138
Points : 2 466
Points : 2 466
Envoyer un message via Yahoo à zinzineti
Que donne ces commandes ?

Code :
1
2
3
4
SELECT SERVERPROPERTY('ProductVersion') AS ProductVersion
,SERVERPROPERTY('ProductLevel') AS ProductLevel
,SERVERPROPERTY('Edition') AS Edition
,SERVERPROPERTY('EngineEdition') AS EngineEdition
Il y a eu une discussion qui se rapproche un peu à ton problème ici
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2011, 00h27   #6
Futur Membre du Club
 
Inscription : juin 2009
Messages : 50
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 50
Points : 17
Points : 17
merci et voila le message d'erreur:
Code :
1
2
3
4
5
6
Major Error 0x80040E14, Minor Error 25921
> SELECT SERVERPROPERTY('ProductVersion') AS ProductVersion
,SERVERPROPERTY('ProductLevel') AS ProductLevel
,SERVERPROPERTY('Edition') AS Edition
,SERVERPROPERTY('EngineEdition') AS EngineEdition
The FUNCTION IS NOT recognized BY SQL Server Compact Edition. [ Name of FUNCTION = SERVERPROPERTY,DATA type (IF known) =  ]
nadjibnet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2011, 12h20   #7
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 138
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 138
Points : 2 466
Points : 2 466
Envoyer un message via Yahoo à zinzineti
C'est ce que je pensais. Vous travaillez sur SQL Server Compact Edition. Et il me semble que cette version impose des limitations.

Par exemple l'option "WITH NOCHECK" n'est pas supportée !

Celà veut dire que l'ajout de la contrainte CHECK sans l'option "WITH NOCHECK" impose la vérification en amont des valeurs existantes pour la colonne type de la table DVD.

une idée pour contourner le pb : DROP / CREATE de la table DVD
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/01/2011, 16h40   #8
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 463
Points : 10 463
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Citation:
Envoyé par zinzineti Voir le message
C'est ce que je pensais. Vous travaillez sur SQL Server Compact Edition.
Ça apparaissait dans la première capture d'écran
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2011, 22h13   #9
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 138
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 138
Points : 2 466
Points : 2 466
Envoyer un message via Yahoo à zinzineti
Citation:
Envoyé par Waldar Voir le message
Ça apparaissait dans la première capture d'écran
Désolé
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2011, 02h55   #10
Futur Membre du Club
 
Inscription : juin 2009
Messages : 50
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 50
Points : 17
Points : 17
j'ai encore besin de vous c'est trés urgent car je doit remétre ce tp ce jeudi

bon j'ai réussi a faire le clé étrangère vous voyez la lésion entre les tables.
j'ai un big problème quand je j'assy de supprimé une ligne de DVD ou de Client
voila le message d'erreur:

Code :
1
2
3
Major Error 0x80040E35, Minor Error 0
> DELETE FROM dvd WHERE num_dvd=1
The specified INDEX does NOT exist. [ UQ__location__0000000000000276 ]
par contre si je modifie le schéma de location en ajoutant la contrainte unique au (num_carte,num_dvd) qui sont déjà comme clé primaire. la suppression d'une ligne de DVD ou de Client fonction parfaitement. mais il me cause problème lorsque un même client loue deux DVD a la foi (je trouve ça logique puisque j'ai num_carte qu'est unique)
nadjibnet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2011, 10h17   #11
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Citation:
Envoyé par nadjibnet Voir le message
par contre si je modifie le schéma de location en ajoutant la contrainte unique au (num_carte,num_dvd)
[...]
mais il me cause problème lorsque un même client loue deux DVD a la foi (je trouve ça logique puisque j'ai num_carte qu'est unique)
Non, c'est le couple (num_carte,num_dvd) qui doit être unique.Sinon votre client ne pourrait non seulement pas louer deux DVD à la fois, mais même pas en deux fois. En fait il ne pourra utiliser sa carte qu'une seule fois

Vous devriez même avoir une unicité sur (num_carte,num_dvd, dateLoc), afin qu'un client puisse louer deux fois le même DVD à des moments différents...
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2011, 13h44   #12
Futur Membre du Club
 
Inscription : juin 2009
Messages : 50
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 50
Points : 17
Points : 17
Citation:
Envoyé par aieeeuuuuu Voir le message
Non, c'est le couple (num_carte,num_dvd) qui doit être unique.Sinon votre client ne pourrait non seulement pas louer deux DVD à la fois, mais même pas en deux fois. En fait il ne pourra utiliser sa carte qu'une seule fois

Vous devriez même avoir une unicité sur (num_carte,num_dvd, dateLoc), afin qu'un client puisse louer deux fois le même DVD à des moments différents...
merci mais tu ne m'a pas compris, le couple(num_carte,num_dvd) ils sont unique pcq ils sont comme clé primaire. Mon problème c'est: après l'ajout d'un client par exemple je veux le supprimer je reçois une erreur mais quand j'ajoute la contrainte unique a la table location de l'attribut num_carte la suppression ce fait. mais logiquement j'aurai un problème dans l'ajout de location "Un client ne peux pas louer un autre dvd jusque ce que je supprime sa location (il rend le dvd loué)". Donc je doit garder mon 1er carte ça c'est sure mais il faut que je résou le problème de suppression.

note: la méme chose s'applique pour la suppression d'un dvd.
nadjibnet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2011, 14h11   #13
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
1/ pouvez vous poster la requete complète de suppression que vous tentez d'exécuter

2/ pouvez-vous essayez d'exécuter
Code sql :
1
2
 
DBCC FREEPROCCACHE
et de réessayer ensuite votre requete de suppression, et nous dire ce que cela donne
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2011, 18h05   #14
Futur Membre du Club
 
Inscription : juin 2009
Messages : 50
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 50
Points : 17
Points : 17
1/
Requette SQL:
Code :
DELETE FROM [client] WHERE (([num_carte] = @num_carte))
Appel de la méthode Delete:
Code :
ClientTableAdapter.DeleteDecimal.Parse(Tb_NumCarte.Text));
ps: La suppression d'un tuple depuis la table location fonction correctement avec la même manière c'est pour DVD et Client que le problème décrit précédemment se pose.

2/
Message d'erreur de la requette que tu m'a demander d’exécuter:
Code :
1
2
3
Major Error 0x80040E14, Minor Error 25501
> DBCC FREEPROCCACHE
There was an error parsing the query. [ Token line number = 1,Token line offset = 1,Token IN error = DBCC ]
nadjibnet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2011, 23h11   #15
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 138
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 138
Points : 2 466
Points : 2 466
Envoyer un message via Yahoo à zinzineti
il faut d'abord supprimer les lignes dans les tables FILLES (tables ayant les clés étrangères) avant la suppression dans la table PARENT
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2011, 00h05   #16
Futur Membre du Club
 
Inscription : juin 2009
Messages : 50
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 50
Points : 17
Points : 17
Citation:
Envoyé par zinzineti Voir le message
il faut d'abord supprimer les lignes dans les tables FILLES (tables ayant les clés étrangères) avant la suppression dans la table PARENT
merci. Oui bien-sure.

Bon je viens de résoudre mon problème, j'ai supprimé la table location ainsi que tous ses contraints, je les recrée et j'ai crée les contraintes des clés étrangères graphiquement avec le Date Set Designer .

donc tous fonctionne comme je les voulu ...Hamdoullah(Je remercie dieu)

Merci a tous qui mon soutenue
nadjibnet est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h30.


 
 
 
 
Partenaires

Hébergement Web