Formateur : DRIOUCH B.
Etablissement : OFPPT/GC/CFMOTI (12/12/2011 (12/12/2011) ) cfmoti.driouch@gmail.com http://www.istahttp://www.ista -ntic.net/
DRIOUCH B. 1
Plan
Introduction - Dfinition Types de donnes Instruction (Dclaration, Affectation, Affichage) Instruction de contrle (Alternative, Itrative) Gestion transaction Erreur (Exception) Les Curseurs Les Procdures Stocks Les Fonctions Les Triggers
DRIOUCH B.
TransactTransact -SQL
Dfinition
Transact-SQL est une extension de SQL vers un Transactlangage de programmation, il est aussi le point central de l'utilisation de Microsoft SQL Server. Server. Toutes les applications qui communiquent avec SQL Server le font en envoyant des instructions TransactTransact -SQL au serveur, quelle que soit l'interface utilisateur de l'application. l'application. En plus de a, pour soulager les postes client, une partie des applications client on les programme au niveau Serveur (SGBD) avec plus de performance processeur et mmoire. mmoire.
DRIOUCH B. 3
Types de Donnes
Valeurs numriques exactes bigint int smallint tinyint De -2^63 ((-9 223 372 036 854 775 808) 2^632^63-1 (9 223 372 036 854 775 807) De -2^31 ((-2 147 483 648) 2^312^31-1 (2 147 483 647) De -2^15 ((-32 768) 2^152^15-1 (32 767) De 0 255 Donnes de type entier qui peuvent prendre la valeur 1, 0 ou NULL. bit Les valeurs de chanes TRUE et FALSE peuvent tre converties en bit : TRUE est converti en 1 et FALSE en 0 Types de donnes numriques ayant une prcision et une Decimal, numeric chelle fixes. decimal[ (p[ , s] )] et numeric[ (p[ , s] )] money smallmoney
DRIOUCH B.
-922 337 203 685 477,5808 922 337 203 685 477,5807 -214 748,3648 214 748,3647
8 octets 4 octets
4
Types de Donnes
Valeurs numriques approximatives float [(n)] - 1,79E+308 -2,23E-308, 0 et 2,23E-308 1,79E+308 Selon la valeur de n real - 3,40E + 38 -1,18E - 38, 0 et 1,18E - 38 3,40E + 38 4 octets Date et heure Datetime smalldatetime
Du 1er janvier 1753 au 31 dcembre 9999 Du 1er janvier 1900 au 6 juin 2079
8 octets 4 octets
Chanes de caractres d'une longueur fixe de n octets, n doit tre compris Entre 1 et 8000 octets [(n)] entre 1 et 8000 Donnes de type caractre non-Unicode d'une Selon n longueur variable. n doit tre compris entre 1 et 8000. varchar[(n|max)] max indique que la taille maximale de stockage est gale 2^31-1 octets Donnes non-Unicode de longueur variable figurant le stockage est tout de dans la page de codes du serveur et ne pouvant pas mme de text dpasser en longueur 2^31 - 1 (2 147 483 647) 2 147 483 647 octets caractres
DRIOUCH B. 5
Types de Donnes
Chanes de caractres Unicode nchar Donnes de type caractres Unicode de longueur fixe de n caractres. n doit tre compris entre 1 et 4 000 La taille de stockage, en octets, est le double de n. La taille de stockage, en octets, est le double du nombre de caractres entrs plus 2 octets La taille de stockage, en octets, est le double du nombre de caractres entrs
Donnes de type caractres Unicode de longueur variable. n peut tre compris entre 1 et 4 000. max Nvarchar[(n|max)] indique que la taille de stockage maximale est de 2^31-1 octets. Donnes Unicode de longueur variable ne pouvant pas dpasser 2^30 - 1 caractres (c'est--dire 1 073 741 823).
ntext
DRIOUCH B.
Types de Donnes
Chanes binaires binary [ ( n ) ] Donnes binaires de longueur fixe de n octets, o n est une valeur comprise entre 1 et 8 000 L'espace mmoire occup est de n octets. La taille mmoire est la longueur relle des donnes entres, plus deux octets
Donnes binaires de longueur variable. n est une valeur comprise entre 1 et 8 000. max indique que Varbinary[(n|max)] l'espace mmoire maximal occup est de 2^31-1 octets Donnes binaires de longueur variable occupant de 0 image 2^31 - 1 (2 147 483 647) octets.
DRIOUCH B.
Affectation
Syntaxe gnrale : Select @variable=Expression o set @variable=Expression - Exemple :select @i=3 set @j=4 select @str @str='TSDI' ='TSDI' - Affectation multiple select @i=3,@j=4,@str @i=3,@j=4,@str='TSDI' ='TSDI' est correcte - Mais set @i=3, @j=4, @ @str str='TSDI' ='TSDI' est une affectation incorrecte.
DRIOUCH B. 8
Affichage
Affichage des valeurs
Pour afficher le contenu dune variable on utilise la mme instruction select. Select @i Affichage multiple : Select @i,@j,@str @i,@j,@str NB:On peut utiliser select pour affecter une valeur ou bien pour afficher une autre, mais pas pour faire les deux, donc linstruction select @i=20, @str @str est incorrecte.
Et dons lanalyseur de requtte SQL on a deux sortie daffichage Messages pour Print et Table pour Select
DRIOUCH B.
Exemple
Exemple de variable de type table :
Declare @stg table (numInsc int primary key, key, nom varchar(20), varchar(20), prenom varchar(20), varchar(20), moyenne numeric(4,2)) numeric(4,2)) /*la particularit des variables de type table, est quon peut utiliser des commandes insert, select, update, delete */ insert into @stg @stg values(103,'LAAROUSSI','SALAH',14) insert into @ @stg stg values(107,'AADISSA','Youness',14.5) insert into @stg @stg values(200,'SOQRAT','Sanaa',12.5) Select * from @stg @stg Select avg( avg(moyenne) moyenne) from @stg @stg
DRIOUCH B. 10
Bloc dinstructions
Un bloc dinstruction est une ensemble dinstruction TT-SQL qui sont considr comme un tout ( une seule). Un bloc dinstruction peut contenir dautres sous blocs. Pour dclarer un bloc dinstructions en TT-SQL en utilise :
DRIOUCH B.
11
Bloc Instruction
Bloc dinstructions
Begin --instruction(1) --instruction(1) --instruction(2) --instruction(2) --instruction(N) --instruction(N) end - Example: declare @i @i int,@j int begin set @i @i=2 set @j=3 select @i @i=@i+1 set @j=@j@j=@j-1 select @i @i as ' 'i i', @j as 'j' end
DRIOUCH B. 12
Structure Alternative
Structure Alternative
La structure alternative est une structure de contrle qui permet dexcuter un de deux actions suivant une condition. Syntaxe : If(condition) -instruction ou bloc dinstruction else -instruction ou bloc dinstruction NB : la partie else est optionnelle. Il est possible dimbriquer des if. - Exemple : Declare @stg table( table(numInsc numInsc int primary key, key, nom varchar(20), varchar(20), prenom varchar(20),moyenne varchar (20),moyenne numeric(4,2)) numeric(4,2)) insert into @stg values(103,'LAAROUSSI','SALAH',14) If not exists(select exists(select * from @stg ) Print 'la table est vide' Else Print 'la table n''est pas vide'
DRIOUCH B. 13
Structure Itrative
Structure Itrative
La structure itrative est une structure qui permet dexcuter un mme traitement plusieurs fois. Syntaxe gnrale : While(condition) While(condition) -instruction ou bloc dinstructions o Etiquette : -instruction ou bloc dinstructions goto etiquette - Exmple : calcule de la factorielle dun nombre
DRIOUCH B.
14
Structure Itrative
Declare @i int, int, @f int,@n int,@n int select @n=6, @f=1, @i=1 while (@i<=@n) begin set @f=@f @f=@f*@ *@i i set @i @i=@i+1 end select @f as le le factoriel factoriel - Deuxime Solution : Declare @i @i int, int, @f int, int, @n int select @n=6, @f=1, @i @i=1 label: set @f=@f @f=@f*@ *@i i set @i @i=@i+1 if(@i if(@ i<=@n) goto label select @f as le le factoriel
DRIOUCH B. 15
Structure de Choix
Structure de choix (CASE)
La fonction CASE est une expression TransactTransact-SQL spciale qui permet l'affichage d'une valeur de remplacement en fonction de la valeur d'une colonne. Ce changement est temporaire. Par consquent, aucune modification permanente n'est apporte aux donnes. Cet exemple affiche dans le jeu de rsultats d'une requte, le nom complet de la ville dans laquelle vit chaque Formateur :
SELECT nom, SELECT nom, CASE CASE ville WHEN note<8 THEN Elimin' WHEN 'CA' THEN 'Casablanca' WHEN Note>=8 and Note<10 THEN Redoublent' WHEN 'Kn 'Kn' ' THEN 'Kenitra' WHEN Note>=10 THEN Admis WHEN 'RB' THEN 'Rabat' END AS Dcisions END AS 'ville d''affectation FROM Auditeur ORDER BY Dcisions FROM Auditeur ORDER BY nom
DRIOUCH B.
16
Conversion de Type
Fonctions de conversion
Certaines conversions ne peuvent tre automatiquement ralises par le systme. systme. Nous devons alors raliser ces conversions de manire explicite au moyen des fonctions de conversion CAST(expression AS data_type[(length)]) et CONVERT(data_type [(length)], expression [,style]).
SELECT CONVERT(DATETIME,'10CONVERT(DATETIME,'10-14 14-2011',110) AS "Date au Format USA"
DRIOUCH B.
17
Transactions
Traitement des transactions
Une transaction est une suite d'oprations effectues comme une seule unit logique de travail. travail . Une unit logique de travail doit possder quatre proprits appeles proprits ACID (Atomicit, Consistance, Isolation et Durabilit). Durabilit). Atomicit : succs ou chec Consistance : tout est fait ou rien n'est fait Isolation : indpendant d'autres transactions ou vnements Durabilit : les changements, une fois traits, ne peuvent pas tre annuls Syntaxes Dbut de transaction : BEGIN TRAN[SACTION] [nomtransaction [nomtransaction] ] Validation de transaction : COMMIT TRAN[SACTION] [nomtransaction [nomtransaction] ] Annulation de transaction : ROLLBACK TRAN[SACTION] [nomtransaction [nomtransaction|nom |nom P.C.] un point de contrle (P.C.) : SAVE TRAN[SACTION] [nom P.C.] Exemple : begin TRAN a insert into Passe_ex values(1,3,12.3) save tran ab insert into Passe_ex values(1,5,12.3) rollback tran ab insert into Passe_ex values(2,3,12.3) DRIOUCH B. 18 Commit Tran a
DRIOUCH B.
19
Transactions
Transactions imbriques
Begin Tran CALL B If not ok Rollback Tran Else Commit Tran Begin Tran CALL C If not ok Rollback Tran Else Commit Tran Begin Tran If not ok Rollback Tran Else Commit Tran
DRIOUCH B.
20
10
DRIOUCH B.
21
11
Gestion Erreurs
Niveau de Gravit
DRIOUCH B.
23
Les Exceptions
les Exceptions:
TRY...CATCH :Implmente la gestion des erreurs pour TransactTransact-SQL
BEGIN TRY SELECT 1/0; END TRY BEGIN CATCH SELECT ERROR_NUMBER() AS ErrorNumber, ERROR_SEVERITY() AS ErrorSeverity, ERROR_STATE() AS ErrorState, ERROR_PROCEDURE() AS ErrorProcedure, ERROR_LINE() AS ErrorLine, ERROR_MESSAGE() AS ErrorMessage; END CATCH; ERROR_NUMBER() renvoie le numro de l'erreur. ERROR_SEVERITY() renvoie la gravit de l'erreur. l'erreur. ERROR_STATE() renvoie le numro d'tat de l'erreur. l'erreur. ERROR_PROCEDURE() renvoie le nom de la procdure stocke ou du dclencheur dans lequel s'est produit l'erreur l'erreur. . ERROR_LINE() renvoie le numro de ligne au sein de la routine qui a entran l'erreur. l'erreur. ERROR_MESSAGE() renvoie le texte complet du message d'erreur. d'erreur. Ce texte comprend les valeurs fournies pour tous les paramtres substituables, tels que les longueurs, les noms d'objet ou les heures. heures.
DRIOUCH B. 24
12
DRIOUCH B.
26
13
Exercices
1. Factoriel de n. 2. Somme = x^1/1! + x^2 / 2! ++ x^n/n! x^n/n ! pour x et n. 3. Pour une valeur A, chercher le plus petit n qui vrifie n!>=A. 4. Tableau de multiplication de N, dans un variable table. 5. Nombre premier <=N. 6. PGDC de a et b. 7. Equation 2eme degr.
Solution sur le Forum du site :
http://www.istahttp://www.ista -ntic.net/
DRIOUCH B. 27
Les Curseurs
Les curseurs permettent de raliser des traitements itratifs sur des jeux de rsultats, comme le balayage dune table, enregistrement par enregistrement. Syntaxe DECLARE cursor_name CURSOR FOR select_statement Arguments :
cursor_name : Nom du curseur de serveur Transact-SQL dfini. L'argument cursor_name doit respecter les conventions se rapportant aux identificateurs. select_statement : Instruction SELECT standard qui dfinit le jeu de rsultats du curseur. Les mots-cls COMPUTE, COMPUTE BY, FOR BROWSE et INTO ne sont pas autoriss dans l'instruction SELECT d'une dclaration de curseur. L'instruction OPEN remplit le jeu de rsultats tandis que l'instruction FETCH renvoie une ligne partir de ce jeu de rsultats. Les autorisations DECLARE CURSOR sont octroyes par dfaut tout utilisateur qui a des autorisations SELECT sur les vues, les tables et les colonnes utilises par le curseur. Le variable globale @@FETCH_STATUS tablit un rapport d'tat de la dernire instruction FETCH 0 : L'instruction FETCH a russi. -1 : L'instruction FETCH a chou ou la ligne se situait au-del du jeu de rsultats. -2 : La ligne recherche est manquante.
DRIOUCH B.
28
14
15
DRIOUCH B.
31
Exercices
Soit les table suivantes(DB_Calcul suivantes(DB_Calcul): ):
Pair_impair (num, num, reponse): reponse): crire un programme qui modifie rponse par pair ou impaire selon valeur de num Premier( Premier(num num, , reponse): reponse): crire un programme qui modifie reponse par premier ou non selon valeur de num Calcul(Num1,Num2, Calcul(Num1,Num2,Op,Resultat Op,Resultat): ): crire un programme qui calcul le Resultat selon Num1, Num2 et Op(+,Op(+,-,*,/)
DRIOUCH B.
32
16
Procdures Stockes
Une procdure stocke (Stored Procedure pour SQL Server) est une suite dinstructions SQL stockes dans la base de donnes et pouvant tre excute par appel de son nom avec ou sans paramtre. Les procdures stockes diffrent des instructions SQL :
Leur syntaxe est vrifie et elles sont compiles. Cest le code compil qui est utilis lors des appels Ne sont pas appeles automatiquement, mais doivent faire lobjet dun appel explicite de la part de lutilisateur. Peuvent tre appeles par plusieurs applications frontales
Avantages :
Amliorent les performances par utilisation du code compil Renforcent lintgrit de la base : en centralisant les traitements en un endroit unique unicit du code
DRIOUCH B. 33
Procdures Stockes
Syntaxe
CREATE PROC [EDURE] procedure_name [ { @parameter data_type } [ VARYING ] [ = default ] [ OUTPUT ] ] [ ,...n ] [ WITH { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ] [ FOR REPLICATION ] AS sql_statement [ ...n ] @parameter : Un paramtre de la procdure. Default : Valeur par dfaut pour le paramtre. La valeur par dfaut peut contenir des caractres gnriques (%, _, [] et [^]) si la procdure utilise le nom du paramtre avec le mot cl LIKE OUTPUT: Indique que le paramtre est un paramtre de retour renvoy par la procdure.
DRIOUCH B. 34
17
Procdures Stockes
{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION} RECOMPILE indique que SQL Server n'utilise pas le cache pour le plan de cette procdure et que la procdure est recompile l'excution. Utilisez l'option RECOMPILE lorsque vous utilisez des valeurs temporaires ou atypiques sans remplacer le plan d'excution plac en mmoire cache. ENCRYPTION indique que SQL Server crypte l'entre de la table syscomments contenant le texte de l'instruction CREATE PROCEDURE. L'utilisation de l'argument ENCRYPTION vite la publication de la procdure dans le cadre de la rplication SQL Server. FOR REPLICATION Indique que les procdures stockes cres pour la rplication ne peuvent pas tre excutes sur l'abonn. Une procdure stocke cre avec l'option FOR REPLICATION est utilise comme filtre de procdure stocke et n'est excute que pendant la rplication. Cette option ne peut pas tre utilise avec l'option WITH RECOMPILE. La taille maximale d'une procdure stocke est limite 128 Mo. Une procdure stock peut retourn une valeur statique entier pour indiqu sont tat dexcution : if condition RETURN -1 Pour supprimer une PS : Drop Proc procedure_name Pour Modifier une PS : Alter Proc procedure_name paramtre as sql_stat
DRIOUCH B. 35
Procdures Stockes
Exemple : Factoriel
Create Proc Factoriel @n int as begin declare @f int, @i int select @f=1, @i=1 while (@i<=@n) begin set @f=@f*@i set @i=@i+1 end select @n as "N", @f as "Factoriel de N" end Exec Factoriel 5 ou Exec Factoriel @n=5
DRIOUCH B. 36
18
Procdures Stockes
Exemple : FactorielS, FactorielS, Param. Param. Sortie
Create Proc FactorielS @n int, @f int OUTPUT as Begin declare @i int select @f=1, @i=1 while (@i<=@n) begin set @f=@f*@i set @i=@i+1 end End Go declare @fact int Exec FactorielS 8, @fact OUTPUT select @fact as Factoriel Go
DRIOUCH B. 37
Procdures Stockes
Exemple
Sur la base auditeur en ajoute une colonne moyenne, on cre une procdure stock pour le rsultat de la moyenne des examens que lauditeur a pass. -- Ajout de la colonne moyenne alter table auditeur add moyenne real constraint ct_my check (moyenne between 0 and 20) create PROC CalcMy as begin update auditeur set moyenne=(select avg(note) from Passe_Ex Where passe_ex.nuAud=auditeur.NuAud) End Exec CalcMy
DRIOUCH B. 38
19
Procdures Stockes
Exemple avec paramtre
procdure qui fait le mme calcule, mais pour un seul auditeur, son numro est pass en paramtre. create PROC CalcMyP @Aud int= null as begin if @Aud is null update auditeur set moyenne=(select avg(note) from Passe_Ex Where passe_ex.nuAud=auditeur.NuAud); else update auditeur set moyenne=(select avg(note) from Passe_Ex Where passe_ex.nuAud=auditeur.NuAud) where auditeur.NuAud=@Aud; end exec CalcMyP 2 exec CalcMyP @Aud=2 exec CalcMyP
DRIOUCH B. 39
Procdures Stockes
Exemple avec valeur de retour dtat
Create Proc Factoriel @n int, @fact int output as begin declare @f int, @i int select @f=1, @i=1 if @n<0 return -1 else begin while (@i<=@n) begin select @f=@f*@i, @i=@i+1 end set @fact=@f return 0 end end declare @resultat int, @etat int exec @etat=Factoriel -2,@resultat output select @etat as "Etat", @resultat as "Resultat"
DRIOUCH B. 40
20
Exercices
DRIOUCH B.
41
Fonctions
CREATE FUNCTION [ schema_name. ] function_name ( [ { @parameter_name [ AS ][ type_schema_name type_schema_name. . ] parameter_data_type ] ]) [ = default ] } [ ,...n
21
Fonctions
Exemple:
Drop Function Fact CREATE FUNCTION Factorielle (@n int) RETURNS bigint AS BEGIN declare @f bigint, @i int select @f=1, @i=1 while (@i<=@n) begin select @f=@f*@i, @i=@i+1 end RETURN @f END select dbo.Factoriel(6) as Factoriel; ou set @r=dbo.Factoriel(6)
DRIOUCH B. 43
Fonctions
Exemple : une fonction table online
USE GestStg Drop Function NoteStg CREATE FUNCTION NoteStg (@idstg int) RETURNS table AS RETURN (select libelle, note from module inner join note on module.idmod=note.idmod where idstg=@idstg); Go select * from dbo.NoteStg(2) where note>=10; Go
DRIOUCH B. 44
22
Fonctions
Exp :
une fonction table instructions multiples
CREATE FUNCTION NoteStg2 (@idstg int) RETURNS @Resultat table (Module varchar(50), Note decimal(4,2)) AS begin declare @stable table(Module varchar(50), Note decimal(4,2)) insert into @stable select libelle, note from module inner join note on module.idmod=note.idmod where idstg=@idstg insert into @stable select 'Moyenne :', Moyenne from stagiaire where idstg=@idstg insert into @Resultat select * from @stable RETURN end Go select * from dbo.NoteStg2(1); Go
DRIOUCH B. 45
Exercices
Ecrire une fonction qui retourne la moyenne pour un stagiaire dont id donne en paramtre crire une fonction qui retourne pour un stagiaire donne, la liste des modules avec la moyenne des notes pour chaque module. module.
DRIOUCH B. 46
23
Triggers (Dclencheurs) )
Forme volue de rgles utilises pour renforcer lintgrit de la base de donnes, particulirement lintgrit rfrentielle. Les triggers sont un type particulier de procdure mmorise. - sont attachs des tables - ragissent aux fonctions de cration (Insert), modification (Update) et suppression (Delete) - ne peuvent pas tre appels explicitement dans les applications Les triggers sont dclenchs automatiquement par le noyau SQL chaque intervention sur la table qui les supportent. Un trigger est toujours associ une table, qui peut avoir au maximum trois triggers pour (Insertion, modification et suppression de ligne) La suppression dune table entrane la destruction de ses triggers Avec SQL 2005 et plus, en peut avoir des dclencheurs sur LDD(Langage de Dfinition de Donne) comme (Create, Alter, Drop) et certaines procdures stockes systme qui effectuent des oprations de type LDD
DRIOUCH B. 47
Triggers (Dclencheurs) )
Principe de fonctionnement.
Deux tables virtuelles sont cres au moment de la MAJ des donnes sur une table (INSERTED, DELETED) en lecture seul, Elles sont destines contenir les lignes de la table sur lesquelles ont t effectues des oprations. Les tables INSERTED et DELETED peuvent tre utilises par le trigger pour dterminer comment le traitement doit se drouler. Ce traitement est crire par le dveloppeur. Cas de suppression dune ligne de table (Delete) : La/les lignes supprimes sont places dans la table temporaire DELETED et supprimes de la table relle; Cas de cration dune ligne de table (Insert) : La/les lignes nouvelles sont places dans la table temporaire INSERTED et dans la table relle; Cas de modification dune ligne de table (Update) : La/les lignes avant modification sont places dans la table temporaire DELETED et la/les lignes aprs modification sont places dans la table temporaire INSERTED et dans la table relle. INSTEAD OF (au lieu de):Les dclencheurs INSTEAD OF peuvent tre dfinis sur des tables ou des vues ; toutefois, les dclencheurs INSTEAD OF sont plus utiles pour l'extension des types de mises jour qu'une vue peut prendre en charge.
DRIOUCH B. 48
24
Triggers (Dclencheurs) )
Syntaxe :
CREATE TRIGGER nom_trigger ON nom_table FOR INSERT AS bloc dinstruction SQL CREATE TRIGGER nom_trigger ON nom_table FOR UPDATE AS bloc dinstruction SQL CREATE TRIGGER nom_trigger ON nom_table FOR DELETE AS bloc dinstruction SQL
ou
CREATE TRIGGER nom_trigger ON nom_table FOR INSERT, UPDATE AS bloc dinstruction SQL Suppression dun trigger, Syntaxe : DROP TRIGGER nom_trigger
DRIOUCH B. 49
Triggers
Exemple : Pour implment la contraint: contraint: de limiter le nombre de note par stagiaire par Matire 3, sur la base GestStg, GestStg, on doit utilis les triggers triggers: :
CREATE TRIGGER LimitNote ON note FOR INSERT AS begin if (select count(*) from note,inserted where note.idstg=inserted.idstg and note.idmod=inserted.idmod)>3 begin RAISERROR('nombre limite 3 notes par module, insertion annuler,15,1) rollback tran end end Go
DRIOUCH B. 50
25
Triggers
Exemple (Instead of): Pour la suppression dun module module: :
CREATE TRIGGER Supp ON Module INSTEAD OF DELETE AS begin Delete Form Note Where IdMod in (select idmod from deleted) Delete From Module Where IdMod in (select idmod from deleted) end Go
Ici la suppression des notes ce passe avant la suppression des modules pour vit lerreur provoqu par la contraint dintgrit rfrentiel.
DRIOUCH B. 51
Exercice
Sur la base GestStg: GestStg:
Stagiaire (idstg (idstg, , nom, moyenne) Matiere (idmat, idmat, libelle, coeff) coeff) Note (idstg (idstg, , idmat, note)
1) Crer un trigger qui affiche les lignes insr pour insert sur la table Module. 2) Refaire limplmentation des contraintes dintgrit suivant par des triggers: i. Rfrentiel (cl tranger) ii. De domaine (0<=Note<=20) 3) Implment la suppression en cascade 4) Recalculer la moyenne pour chaque modification dans les notes
DRIOUCH B. 52
26