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

SQL Procédural MySQL Discussion :

Trigger insertion valeur


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 85
    Par défaut Trigger insertion valeur
    Bonjour,

    voici la définition de ma table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CREATE table Representant (
    	noRepr integer,
    	primary key (noRepr)
    	)
    J'aimerai créer un trigger qui permet de checker avant chaque insertion d'une valeur ci celle-ci est correct(numérique et supérieur à 0).

    J'ai pour l'instant ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE OR REPLACE TRIGGER CheckValeur
     BEFORE INSERT ON representant 
     FOR EACH ROW 
    	BEGIN 
    	IF New.noRepr > 0 then
          insert into representant values(New.noRepr);
    	END IF; 
    	END;
    Merci de votre réponse.
    Cordialement,

  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 873
    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 873
    Par défaut
    Salut breizhcola29.

    Voici un exemple de vérification à l'insertion.
    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE `base`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `representant`
    --------------
     
    --------------
    CREATE TABLE `representant`
    (
      `norepr`   integer NOT NULL,
      PRIMARY KEY (`norepr`)
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    DROP TRIGGER IF EXISTS `CheckValeur`
    --------------
     
    --------------
    CREATE TRIGGER `CheckValeur`
    BEFORE INSERT ON `representant`
    FOR EACH ROW BEGIN
      DECLARE _msg VARCHAR(255);
      IF new.norepr < 1 THEN
            SET _msg = concat('Insertion impossible : ', cast(new.norepr as char));
            SIGNAL SQLSTATE VALUE '07777' SET MESSAGE_TEXT = _msg, MYSQL_ERRNO = 7777;
      END IF;
    END
    --------------
     
    --------------
    INSERT INTO `representant` (`norepr`) VALUES (1)
    --------------
     
    --------------
    select * from representant
    --------------
     
    +--------+
    | norepr |
    +--------+
    |      1 |
    +--------+
    --------------
    INSERT INTO `representant` (`norepr`) VALUES (-2)
    --------------
     
    ERROR 7777 (07777) at line 55: Insertion impossible : -2
    --------------
    select * from representant
    --------------
     
    +--------+
    | norepr |
    +--------+
    |      1 |
    +--------+
    --------------
    INSERT INTO `representant` (`norepr`) VALUES (3)
    --------------
     
    --------------
    select * from representant
    --------------
     
    +--------+
    | norepr |
    +--------+
    |      1 |
    |      3 |
    +--------+
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 1
    --------------
     
     
    Appuyez sur une touche pour continuer...
    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [TSQL] trigger inserted
    Par mous33 dans le forum Adaptive Server Enterprise
    Réponses: 4
    Dernier message: 31/10/2007, 13h46
  2. Trigger Insert Récupérer valeur autoincrément
    Par Silvia12 dans le forum Développement
    Réponses: 1
    Dernier message: 11/05/2007, 08h52
  3. Insertion valeure dans une table
    Par krfa1 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 29/03/2005, 10h50
  4. trigger insert entre 2 serveurs
    Par Shabata dans le forum Développement
    Réponses: 5
    Dernier message: 27/05/2004, 12h00
  5. - Insertion : valeur explicite
    Par Leoxp dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 06/05/2003, 17h21

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