Vous êtes sur la page 1sur 7

Module :

systme de gestion de BD 2

Dfinitions :
Lt : est un ensemble constitue dun plusieurs instruction SQL envoyer en une
unit par le client cela signifie que si on a une erreur dans lune des commandes
aucune des commande ne sera excut.
Les lots permettent damliorer les performances script dinstruction.
Insertion qui permet tre combin

Instruction qui ne permet pas tre


combin

Create database -

Create database -

Create table -

Create procedure -

Create index Exemple :

Exemple :

Create Database test

Create Database test -

Use test

Create procedure

Create table example


GO

valide

Non valide

On utilise GO pour indiquer la fin dun lot.

Script : Cest une srie dinstruction transasql stock dans un fichier.


Un script transacsql comporte un ou plusieurs Lts dinstruction SQL
Transaction : Est compose de plusieurs commandes SQL qui permettent de lire
et mettre jour la base de donnes
Dbut par Begin transaction et se termine par commit transaction pour valider tt
les transactions ou bien roll back transaction pour annuler tt les transactions
Commit transaction

Valider toutes les insertions

Rollback transaction

Annuler

Exemple :
Begin transaction Trans
Insert into client values (1,berrada,ali,30)
Update commande

Set date.cmd =01/01/2010


Where n_cmd=1
Delete client where n_clt=1
Commit transaction

Les procdures stockes :


Dfinition:
Est un ensemble dinstruction compiler qui peut sexcuter plus rapidement
Les procdures stockes augmentent la puissance et la performance du langage
SQL
Une procdure stocke peut sexcuter par un appel de son nom
Particularits :
1 Leurs syntaxes sont vrifier et compiler
2 ne sont pas appeles automatiquement attend un appel de lappart dun
utilisateur
3 Peuvent tre par plusieurs applications (comme le VB)
Cration dune procdure stocke :
1. P.S. Simple
Syntaxe : create procdures Nom_proc
As
Inst SQL
Remarque :
Syntaxe devient :
Create proc nom_procedure
As
Inst SQL
Exemple : PS les clients habitants RABAT
Create proc P1
As
Select * from client

Where ville =rabat


Remarque
4 Instructions transacSQl permettent la gestion des procdures stockes
Create procedure

creation

Alter procedure

modification

Drop procdure

suppression

Excute procdure

excution

Exercice :
1 Ecrire une procdure stocke qui affiche tt les informations concernant
Berrada
2 Ecrire une proc stock qui augmente salaire par 5% pour tous les emp ayant
un ge entre 30 et 40
3 Ecrire une proc stock qui affiche le total des salaires demp habitants a FEZ et
Mekns
4 Ecrire une proc stocke qui permet de supprimer les employes ayant un ge
plus que 60 ans

Solution:
1 Ecrire une procdure stocke qui affiche tt les informations concernant
Berrada
Create proc P1
As
Select *from EMP where nom=berrada
Exec P1
2 Ecrire une proc stock qui augmente salaire par 5% pour tous les emp ayant
un ge entre 30 et 40
create proc P2
As
Update EMP
Set salaire =[salaire]*1,05 where( datediff(year,getdate(),date_n)>=30 and
datdiff(year,getdate(),date_n)<=40

Exec P2
3 create proc p3
As select sum (salaire), sum (commition) from EMP
Where ville in (fes,meknes)
4 create proc Pu
As
Delete EMP
Where datediff (year, getdate (), date_n) >= 60
Crer les
Afficher les employs embauchs il y a 4 ans
Le nb demploys travaillants dans un dpartement
Les employs participants aux projets de maintenance
Le nb des employeurs ne participant na aucun projet
Le nb dun employ donner par 2% si le salaire est sup a 2000 et un message au
cas contraire
Lemploy participant au maximum des projets et affiche le nb demployer par
dpartement
Procdure stocke qui augmente le salaire des employs dun dpartement
donn par un pourcentage

Les dclencheurs (triggers)


Les dclencheurs sont un type particulier
Cest comme les procdures stockes mais on ne lappelle pas, ils sont
dclencher automatiquement par le noyau SQL chaque intervention sur la table
quil supporte ou excution dune requte INSERT, DELETE, UPDATE a une table
ou vue.
Caractristiques :
-

Sont attacher des tables


Ragissent auprs dune INSERT, DELETE, UPDATE
Dclencher automatiquement (ne peuvent pas tre appel explicitement
dans des applications

Syntaxes gnrale :
Create trigger nom trigger on {table /vue}
{For /after/ instead of} {Insert /update /delete}
As
Inst SQL

Create trigger nom trigger


On Nom_table
For insert ou bien delete ou bien update
As
Inst SQL
Modification d UN trigger:
Alter trigger nom_trigger
Suppression dun trigger:
Drop trigger Nom_trigger
Remarque:
Un trigger est tjrs attach un une table rel
Exercice :
1) Crer un trigger dinsertion dans la table client
Create trigger t1 on client
For insert
As
Print client ajout
Insert into client values (4,berrada,kamal,30)
2) Crer un trigger qui interdit la modification de la cl primaire de la table
client
Create trigger t2
On client
For update

As
If update (N_clt)
Begin
Rais error (modification impossible, 10, 1)
Rollback transaction
End

2) Principe de fonctionnement dun trigger :


Cas de suppression : (deleted)
La, les lignes sont places dans la table temporaire Deleted et supprimer
de la table rel
La table deleted et les tables de la base de donnes ne peuvent pas avoir
des lignes communes
Cas de lajout : (inserted)
La, les lignes nouvelles sont places dans la table temporaire inserted et
dans la table rel
Remarque :
Toutes les lignes de la table inserted apparaissent dans la table relle de la
base de donnes
Cas de la modification : (inserted) + (deleted)
La ou les lignes avant la modification seront placer avant la table
temporaire deleted et les lignes aprs la modification seront placer dans la
table temporaire inserted et la table relle

Exemple mise en place des triggers

Les triggers sont dfinies avec deux rles principaux


- Contrler que les donnes manipuler vrifiant lintgrit rfrentielle
- La mise en place de traitement correspondant une rgle de gestion

Exemple dintgrit rfrentielle :

Une commande ne peut tre cre que si le client existe dj dans la table
client
Create trigger t_inserted
On command
for insert
As
If exists (select n_clt from inserted where n_clt not in (select n_clt from
client)
Begin print insertion impossible
Rollback transaction
End
Create trigger t_deleted
On client
For deleted
As
If exist (select n_clt from deleted where n_clt in (select

En cas de modification la modification de n_clt dans la table commande il


faut que le nouveau client existe dans la table client

1) A chaque suppression dune commande les lignes de cette commande


seront supprimes et la commande est enregistrer dans la table
commande supprimer.
2) Lors de la cration dune ligne commande il faut vrifier lexistence de
numro de produit et numro de commande et que le stock est suprieur
la quantit command.
3) A chaque suppression dune ligne commande il faut mettre jour la
quantit du stock

Vous aimerez peut-être aussi