Conception Et Réalisation (SQL Server) by Grare Stéphane - HTML preview

PLEASE NOTE: This is an HTML preview only and some elements such as links or page numbers may be incorrect.
Download the book in PDF, ePub, Kindle for a complete version.

Modifications de tables et contraintes

Pour modifier une table sous SQL Server, vous avez deux possibilités : en utilisant l’interface

de « Microsoft SQL Server Management Studio » ou par le code.

En utilisant l’interface

Nous devons modifier manuellement les types, car dans Power AMC, il n’y a pas tous les types

que propose SQL Server. Pour modifier une table manuellement, cliquez droit sur la table à

modifier puis « Création ».

51

index-52_1.png

index-52_2.png

index-52_3.png

index-52_4.png

Vous pouvez alors modifier les données à votre guise.

À noter qu’avec SQL Server, vous avez également la possibilité de préciser si on peut

autoriser les types null (données absentes) en cochant les cases.

Définissons également les contraintes répondant à l’énoncé du problème : « Le numéro de

commande est un champ compteur auto incrémenté de 1 ». On indiquera « oui » à (est

d’identité) sur-le-champ NUMCOM.

Il suffit d’utiliser le menu déroulant et de sélectionner « Oui ».

52

index-53_1.png

index-53_2.png

index-53_3.png

index-53_4.png

« La date de commande est par défaut la date du jour ». Pour la colonne DATCOM on utilisera

la formule getdate().

Le problème, c’est que nous avons contraint notre colonne à la date du jour. Il n’est par

conséquent pas possible de saisir une autre date que la date du jour. On supprime donc la

formule précédente. Remontez en haut des propriétés de la colonne et inscrivez getdate() à

« Valeur ou liaison par défaut ». La colonne proposera la date du jour, mais celle-ci sera alors

modifiable.

« L’indice de satisfaction est compris dans une échelle de 1 à 10 ». Cliquez droit dans la table

correspondante puis « Vérifier les contraintes ».

53

index-54_1.jpg

index-54_2.jpg

Cliquez sur « Ajouter » pour ajouter une contrainte. Dans expression, saisissez votre

contrainte : [SATISF]>=(1) AND [SATISF]<=(10)

Les parenthèses s’ajoutent automatiquement.

« Le code postal est constitué de 5 chiffres ». De la même manière, on ajoute une deuxième

contrainte. Nous saisirons : [POSFOU] like '[0-9][0-9][0-9][0-9][0-9]'

54

index-55_1.jpg

index-55_2.jpg

Il existe aussi des contraintes avec des règles de mises à jour ou de suppression en cas de

spécification d’un INSERT ou d’un UPDATE. Pour mieux comprendre cette notion, nous

allons prendre un exemple concret. Nous allons modifier les contraintes des tables LIGCOM,

PRODUIT et VENDRE de façon à ce que lorsque nous modifierons le code d’un produit de la

table PRODUIT (à l’aide d’une instruction UPDATE par le langage SQL), la mise à jour se

reporte automatiquement sur les tables LIGCOM et VENDRE. Pour cela nous spécifions la règle

de mise à jour « En cascade » comme ci-dessous sur l’écran des Relations de clé étrangère.

Nous procédons donc de cette façon pour les tables LIGCOM, VENDRE et PRODUIT. Une fois

les relations de chacune des tables modifiées, nous allons mettre à jour notre table PRODUIT.

Mettons à jour le code de l’article « I100 » par exemple.

55

index-56_1.png

index-56_2.png

index-56_3.png

index-56_4.png

Nous changeons le code de l’article en « I10C ». On enregistre les modifications et on

actualise notre base de données.

On interroge maintenant la table VENDRE. On constate que celle-ci a été modifiée

automatiquement.

C’est la même chose pour la table LICOM.

56

index-57_1.png

De la même manière, on pourrait appliquer les règles suivantes :

Règle de suppression : Spécifie ce qui se produit si un utilisateur tente de mettre à jour une

ligne contenant des données impliquées dans une relation de clé étrangère.

Aucune action : Un message d'erreur indique à l'utilisateur que la suppression n'est

pas autorisée et la commande DELETE est annulée.

Cascade : Supprime toutes les lignes contenant des données qui interviennent dans la

relation de clé étrangère.

Définir Null : définis la valeur null si toutes les colonnes clés étrangères de la table

peuvent accepter des valeurs null.

Définir la valeur par défaut : définis la valeur par défaut définie pour la colonne si

toutes les colonnes clés étrangères de la table ont des valeurs par défaut définies.

Règle de mise à jour : Spécifie ce qui se produit si un utilisateur tente de mettre à jour une

ligne contenant des données impliquées dans une relation de clé étrangère.

Aucune action : Un message d'erreur indique à l'utilisateur que la mise à jour n'est

pas autorisée et la commande UPDATE est annulée.

Cascade : Mets à jour toutes les lignes contenant des données qui interviennent dans

la relation de clé étrangère.

Définir Null : définis la valeur null si toutes les colonnes clés étrangères de la table

peuvent accepter des valeurs null.

Définir la valeur par défaut : définis la valeur par défaut définie pour la colonne si

toutes les colonnes clés étrangères de la table ont des valeurs par défaut définies.

57