Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
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 03/06/2011, 14h26   #1
Invité de passage
 
hajare karim
Inscription : mars 2010
Messages : 15
Détails du profil
Informations personnelles :
Nom : hajare karim

Informations forums :
Inscription : mars 2010
Messages : 15
Points : 0
Points : 0
Par défaut Créer trigger téléphone

salut,

j'ai crée un trigger qui permet d'adapter le format de tél suivant(05 02.03.01.05) lors de la modification ou l'ajout des infos d'un médecin.

bon voilà j'ai essayé mais je sais où est le problème,

Code :
1
2
3
4
5
6
7
8
9
CREATE TRIGGER telephone
 
ON medecin FOR UPDATE,INSERT 
 
AS
 
ALTER TABLE medecin
 
ADD constraint ck_numero CHECK (tel LIKE ('%.%.%.%'))
cordialement

amina
hajare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 14h41   #2
Membre habitué
 
Avatar de tfc3146
 
Homme Robert Labrousse
Développeur décisionnel
Inscription : février 2009
Messages : 79
Détails du profil
Informations personnelles :
Nom : Homme Robert Labrousse
Localisation : France

Informations professionnelles :
Activité : Développeur décisionnel
Secteur : Boutique - Magasin

Informations forums :
Inscription : février 2009
Messages : 79
Points : 134
Points : 134
Bonjour,

A chaque insertion ou modification dans votre table, vous modifiez la structure de la table. Ce n'est pas ce que vous voulez faire : on ne mets jamais d'ALTER dans un trigger.

Il vous faut écrire un bloc PL/SQL qui ajoute un point tous les 2 caractères : je ferai pour ma part comme cela
tfc3146 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 15h01   #3
Invité de passage
 
hajare karim
Inscription : mars 2010
Messages : 15
Détails du profil
Informations personnelles :
Nom : hajare karim

Informations forums :
Inscription : mars 2010
Messages : 15
Points : 0
Points : 0
salut et merci pour votre réponse,
mais ça veux dire quoi un bloc PL/SQL et comment je peux l'écrire?
peut tu corriger mon code pour que je mieux comprendre?
hajare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 18h02   #4
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
Citation:
Envoyé par hajare Voir le message
salut et merci pour votre réponse,
mais ça veux dire quoi un bloc PL/SQL et comment je peux l'écrire?
peut tu corriger mon code pour que je mieux comprendre?
NON, cela veut dire que cela n'a aucun sens de modifier une table lors de l'ajout ou la modification d'une donnée


il faudrait que vous indiquiez clairement ce que vous désirez
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2011, 10h46   #5
Membre habitué
 
Avatar de tfc3146
 
Homme Robert Labrousse
Développeur décisionnel
Inscription : février 2009
Messages : 79
Détails du profil
Informations personnelles :
Nom : Homme Robert Labrousse
Localisation : France

Informations professionnelles :
Activité : Développeur décisionnel
Secteur : Boutique - Magasin

Informations forums :
Inscription : février 2009
Messages : 79
Points : 134
Points : 134
Pourquoi voulez-vous rajouter ces points ? Je n'en vois pas l'intérêt car c'est juste une question d'affichage.

Quel est le format de votre table et surtout de votre attribut tel ?
tfc3146 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2011, 11h49   #6
Invité de passage
 
hajare karim
Inscription : mars 2010
Messages : 15
Détails du profil
Informations personnelles :
Nom : hajare karim

Informations forums :
Inscription : mars 2010
Messages : 15
Points : 0
Points : 0
c'est pas la question des points,juste c'est un format de tél
car je veux que le champ tel doit respecter le format suivant par exemple:
06 40.31.35.79 donc on est besoin d'inserer des points,mais le trigger ne ça marche pas et je sais pas pourquoi,s'il est possible de corriger mon code pour mieux comprendre.
hajare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2011, 14h28   #7
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 445
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 445
Points : 7 532
Points : 7 532
La mise en forme des données n'est pas du ressort du SGBD mais de l'application qui l'utilise.
C'est donc au niveau de la saisie que la mise en forme doit être effectuée, pas par un trigger lors de l'insertion ou la mise à jour.
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/06/2011, 23h12   #8
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 954
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 954
Points : 17 774
Points : 17 774
Citation:
Envoyé par al1_24 Voir le message
La mise en forme des données n'est pas du ressort du SGBD mais de l'application qui l'utilise.
C'est donc au niveau de la saisie que la mise en forme doit être effectuée, pas par un trigger lors de l'insertion ou la mise à jour.
Là je ne suis absoluement pas d'accord....

Donnant tous les ans un cours sur la gestion de la qualité des données, je peut te dire que l'élément n°1 à tous les niveaux de gestion de la qualité est l'écriture de trigger de reformatage des données. C'est de loin la technique la plus puissante. Cependant il ne faut pas succomber à la cosmétique.
Autrement dit un trigger pour gérer la qualité des données d'un numéro de tel, ne laisserait passer que des nombres et supprimerais les caractères superflus à la volée.
par exemple :
saisie de : 00 33 6-11-86-40-66
correction par trigger : 0033611864066
Enfin pour le formatage spécifique une vue serait adaptée....
dans notre exemple elle donnerait :
00 33 6 11.86.40.66

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 09/06/2011, 16h33   #9
Invité de passage
 
hajare karim
Inscription : mars 2010
Messages : 15
Détails du profil
Informations personnelles :
Nom : hajare karim

Informations forums :
Inscription : mars 2010
Messages : 15
Points : 0
Points : 0
mais pourquoi vous discutez des sujets n'ayant pas de relation avec ma question,SVP aidez moi,j'ai pas encore trouvé la source du problème de mon trigger!!!!
hajare est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 09/06/2011, 16h51   #10
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
Oh que si des infos ont été fournies

UN TRIGGER NE DOIT PAS CONTENIR DE "ALTER"

voir le commentaire de tfc3146
Citation:
on ne mets jamais d'ALTER dans un trigger.
déjà, réglez cela,

ensuite regardez des tutorials sur les Domaines qui posent des contraintes au format des données.
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 14h12   #11
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Ok je vais faire court:

Votre idée est bonne mais vous ne devez pas le faire dans un trigger...

Vous voulez juste ajouter un contrainte CHECK sur votre table médecin pour les téléphones...

Ajoutez donc une fois pour toute votre contrainte à la table... vous n'avez à le faire qu'une fois...

Code :
1
2
3
ALTER TABLE medecin
 
ADD constraint ck_numero CHECK (tel LIKE ('%.%.%.%'))
De cette manière la colonne tel de la table medecin ne contiendra que des numéros formatés.

En revanche rien ne vous empêche EN PLUS de coder une logique de formatage (comme le stipule SQL PRO) dans un trigger qui va commencer par supprimer les espaces etc voir rajouter les points là ou il faut...
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2011, 19h39   #12
Invité de passage
 
hajare karim
Inscription : mars 2010
Messages : 15
Détails du profil
Informations personnelles :
Nom : hajare karim

Informations forums :
Inscription : mars 2010
Messages : 15
Points : 0
Points : 0
bonne idée,mais je veux un trigger pas une constraint...enfin mais pourquoi c'est impossible de mettre update dans un trriger,j'ai déjà vu des exemple sur internet avec update
hajare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2011, 09h27   #13
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837


Comment le dire :
UPDATE : oui
ALTER : NON


et c'est un ALTER que vous vouliez, non !!!

Citation:
Envoyé par hajare Voir le message
salut,

j'ai crée un trigger qui permet d'adapter le format de tél suivant(05 02.03.01.05) lors de la modification ou l'ajout des infos d'un médecin.

bon voilà j'ai essayé mais je sais où est le problème,

Code :
1
2
3
4
5
6
7
8
9
create trigger telephone

on medecin for update,insert 

as

alter table medecin

add constraint ck_numero check (tel like ('%.%.%.%'))
cordialement

amina
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2011, 10h06   #14
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Citation:
mais je veux un trigger pas une constraint
J'adore ce genre de réponse :-)

Et bien vous faites une erreur... je ne peux donc vous aider :-)

Citation:
enfin mais pourquoi c'est impossible de mettre update dans un trriger,j'ai déjà vu des exemple sur internet avec update
Mais qui a dis le contraire?
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2011, 12h34   #15
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 669
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 669
Points : 8 729
Points : 8 729
Bonjour,

Vous confondez beaucoup de choses :

- Une instruction UPDATE (qui peut se trouver dans un trigger) permet de modifier des données qui sont déjà dans la table

- Un trigger est un type particulier de module SQL qui permet de créer des règles métier complexes, en aval

- Une contrainte de domaine (CHECK) permet de vérifier la validité des données suivant une règle simple, et la vérification se fait en amont.

Pour un numéro de téléphone, votre filtre est très léger ...
Il faudrait vérifier que les numéro de téléphone ne contient que des chiffres entre les points.
De plus suivant les pays, les normes et indicatifs téléphoniques ne sont pas les mêmes.
Je ne sais pas si les lettres sont encore utilisées, mais il y a quelques années, c'était le cas dans certains pays.

Êtes-vous dans un contexte international ?

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2011, 14h20   #16
Membre expérimenté
 
Inscription : octobre 2002
Messages : 654
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 654
Points : 552
Points : 552
Bonjour,
Question supplémentaire quel est ton sgbd?
Un trigger s'écrit de façon différente selon le SGBD.

A+
Soazig
soazig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 22h37   #17
Invité de passage
 
hajare karim
Inscription : mars 2010
Messages : 15
Détails du profil
Informations personnelles :
Nom : hajare karim

Informations forums :
Inscription : mars 2010
Messages : 15
Points : 0
Points : 0
pour la réponse d'Olivier,
Bon,j'ai utilisée alter et ça marche bien car il me donne comme message commande réussite,donc je pense qu'on peux utilisé alter.

Et pour la réponse de soazig,j'ai pas compris votre question,je pense qu'il y a un seul sgbdr n'est ce pas?!!
et merci d'avance
cordialement Hajare
hajare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 22h49   #18
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 006
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 006
Points : 18 276
Points : 18 276
Envoyer un message via MSN à CinePhil
Citation:
Et pour la réponse de soazig,j'ai pas compris votre question,je pense qu'il y a un seul sgbdr n'est ce pas?!!
Ben non ! Il existe plusieurs SGBDR différents : MS SQL Server, Oracle, Postgresql, MySQL...
Clique sur le lien Bases de données ci-dessus et tu verras des forums dédiés à différents SGBDR. Et encore, tous n'ont pas leur forum dédié !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 23h09   #19
Invité de passage
 
hajare karim
Inscription : mars 2010
Messages : 15
Détails du profil
Informations personnelles :
Nom : hajare karim

Informations forums :
Inscription : mars 2010
Messages : 15
Points : 0
Points : 0
ah oui je sais qu'il y a de multiples systémes de gestion de base de données et personnellement j'ai utilisé sql server ,juste c'est une incompréhension du question
hajare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2011, 00h19   #20
Invité de passage
 
hajare karim
Inscription : mars 2010
Messages : 15
Détails du profil
Informations personnelles :
Nom : hajare karim

Informations forums :
Inscription : mars 2010
Messages : 15
Points : 0
Points : 0
salut,

vraiment c'est une gentillesse de la part de tous ce qui participer dans la réponse sur ma question ,vous avez vraiment sacrifier votre temps pour répondre à ma question.

hajare 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 18h32.


 
 
 
 
Partenaires

Hébergement Web