IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Code automatique sur sql


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    informaticien
    Inscrit en
    Décembre 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Haïti

    Informations professionnelles :
    Activité : informaticien

    Informations forums :
    Inscription : Décembre 2016
    Messages : 22
    Par défaut Code automatique sur sql
    bonjour je travail sur MySQL
    je suis en train de prépare un Base de données scolaire.
    j'aimerais que le " Id_Eleve " soit automatique c'est a dire compose du nom et du prenom.
    exemple : Sois un eleve Ralph Emmanuel date naissance 12-01-1993. son Id_eleve sera R_E_12.
    je veux le id_eleve soit automatique . tout comme sur access. ideleve= left(nom,3)+"-"+left (prénom,1)+"-"+left(date naissance). j'aimerais quelqu'un m'aide a ce sujet svp . quel est la requête SQL que je dois utiliser.

  2. #2
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 923
    Par défaut
    Salut Ralph Emmanuel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    --------------
    START TRANSACTION
    --------------
     
    --------------
    show variables like 'version'
    --------------
     
    +---------------+------------+
    | Variable_name | Value      |
    +---------------+------------+
    | version       | 5.7.17-log |
    +---------------+------------+
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE `base`
        DEFAULT CHARACTER SET `latin1`
        DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `test`
    --------------
     
    --------------
    CREATE TABLE `test`
    ( `id`         integer unsigned not null auto_increment primary key,
      `nom`        varchar(255)     not null,
      `prenom`     varchar(255)     not null,
      `naissance`  date             not null,
      `id_eleve`   varchar(255)     not null
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    DROP TRIGGER IF EXISTS `eleve`
    --------------
     
    --------------
    CREATE TRIGGER `eleve`
    BEFORE INSERT ON `test`
    FOR EACH ROW BEGIN
      SET NEW.id_eleve=concat(left(new.nom,1),'_',left(new.prenom,1),'_',dayofmonth(new.naissance));
    END
    --------------
     
    --------------
    insert into `test` (`nom`,`prenom`,`naissance`) values
      ('daudet',   'alphonse', '1840-05-13'),
      ('blum',     'leon',     '1872-04-09'),
      ('marchais', 'georges',  '1920-06-07')
    --------------
     
    --------------
    select * from test
    --------------
     
    +----+----------+----------+------------+----------+
    | id | nom      | prenom   | naissance  | id_eleve |
    +----+----------+----------+------------+----------+
    |  1 | daudet   | alphonse | 1840-05-13 | d_a_13   |
    |  2 | blum     | leon     | 1872-04-09 | b_l_9    |
    |  3 | marchais | georges  | 1920-06-07 | m_g_7    |
    +----+----------+----------+------------+----------+
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 1
    --------------
     
     
    Appuyez sur une touche pour continuer...
    @+

  3. #3
    Membre actif
    Homme Profil pro
    informaticien
    Inscrit en
    Décembre 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Haïti

    Informations professionnelles :
    Activité : informaticien

    Informations forums :
    Inscription : Décembre 2016
    Messages : 22
    Par défaut
    Merci beaucoup mon ami vous m'avez beaucoup aidé

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 639
    Billets dans le blog
    10
    Par défaut
    J'ose espérer que cet identifiant ne sera pas votre identifiant primaire, car ce serait une énorme bourde à tout point de vue !

    De plus, plutôt que de stocker en base de données une colonne qui n'est qu'une redondance d'informations présentes par ailleurs, il est bien préférable de créer une vue, dans laquelle cette nouvelle colonne sera issue de la concaténation des informations requises

    Toute redondance est à éviter dans une BDD !

    En plus, un trigger a un impact sur les perfs, et il faut aussi prévoir les cas où les colonnes constitutives de votre identifiant évoluent (modif du nom, du prénom...), trigger for update donc

  5. #5
    Membre actif
    Homme Profil pro
    informaticien
    Inscrit en
    Décembre 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Haïti

    Informations professionnelles :
    Activité : informaticien

    Informations forums :
    Inscription : Décembre 2016
    Messages : 22
    Par défaut Code automatique sql
    Donc tu me conseilles de mettre a jour le trigger a chaque fois le nom et le prénom modif

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 639
    Billets dans le blog
    10
    Par défaut
    Non pas du tout, il faut oublier les trigger

    La première chose, est bien sur d'avoir à l'esprit que cette colonne n'est pas unique, c'est donc un identifiant virtuel multiple

    ensuite pour éviter de stocker plusieurs fois la même information créez une vue

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE VIEW mavue AS
        SELECT col1, col2, [...], coln, concat(left(nom,1),'_',left(prenom,1),'_',dayofmonth(naissance))
        FROM matable
    Ainsi, si une personne change de nom, de prénom ou de date de naissance, l'identifiant reste valide
    le terme d'identifiant pour cette donnée n'est pas très adapté, parlons plutôt de raccourci d'accès ou mnémonique par exemple.

Discussions similaires

  1. [11g] Procédure stockée PL/SQL ajout automatique sur table
    Par schix dans le forum PL/SQL
    Réponses: 10
    Dernier message: 06/10/2015, 16h04
  2. [WD-2007] Balises de code automatique sur word
    Par FramanKalima dans le forum Word
    Réponses: 2
    Dernier message: 10/07/2015, 10h01
  3. [MySQL] Sécurité et publication du code PHP et SQL sur le forum
    Par redoran dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 25/11/2012, 21h26
  4. Réponses: 3
    Dernier message: 26/08/2007, 23h36
  5. Connexion automatique sur base SQL (Login/pass mémorisé)
    Par Fredo67 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 10/10/2005, 16h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo