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 :

Problème d'ajout Fonction CHECK


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2015
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Problème d'ajout Fonction CHECK
    Bjr, J'ai un léger soucis et j'ai promptement besoin de votre aide.


    en fait, j'ai créé cette table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    create table animal(
    idAnim int primary key not null,
    nom varchar(20),
    proprietaire varchar(25),
    genre char(1),
    date_naissance date,
    date_deces date);

    Problème :
    1) j'aimerais ajouter la fonction check (ou tout autre fonction) au moment où je crée la table ci-dessus, pour que date_naissance <= date_mort.

    2) Considérons que la table ci-dessus a déjà été créée, comment ajouter cette fonction (ou tout autre) comme contrainte pour respecter cette condition ?

    N.B : le champ date_mort peut être null.

    Cdt.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    De ce que j'ai trouvé dans l'aide en ligne (à partir de la version 8.0.16):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ALTER TABLE tbl_name
        ADD CONSTRAINT [symbol] CHECK (expr) [[NOT] ENFORCED];
    Et ici tu trouves la syntaxe pour l'expression.
    La syntaxe est en fait la même que dans une requête, donc rien de bien compliqué ici.

    Tatayo.

  3. #3
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 380
    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 380
    Points : 19 062
    Points
    19 062
    Par défaut
    Salut à tous.

    Le check fonctionne qu'à partir de MySql 8.0.16.
    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
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE IF NOT EXISTS `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,
      `naissance`  date             NOT NULL,
      `deces`      date                 NULL DEFAULT NULL,
       CONSTRAINT verif CHECK (naissance <= deces)
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    insert into `test` (`naissance`,`deces`) values (NULL        , NULL)
    --------------
     
    ERROR 1048 (23000) at line 34: Le champ 'naissance' ne peut être vide (null)
    --------------
    insert into `test` (`naissance`,`deces`) values ('2010-01-01', NULL)
    --------------
     
    --------------
    insert into `test` (`naissance`,`deces`) values (NULL,         '2010-12-31')
    --------------
     
    ERROR 1048 (23000) at line 36: Le champ 'naissance' ne peut être vide (null)
    --------------
    insert into `test` (`naissance`,`deces`) values ('2010-01-01', '2009-12-31')
    --------------
     
    ERROR 3819 (HY000) at line 37: Check constraint 'verif' is violated.
    --------------
    insert into `test` (`naissance`,`deces`) values ('2010-01-01', '2011-12-31')
    --------------
     
    --------------
    select * from `test`
    --------------
     
    +----+------------+------------+
    | id | naissance  | deces      |
    +----+------------+------------+
    |  1 | 2010-01-01 | NULL       |
    |  2 | 2010-01-01 | 2011-12-31 |
    +----+------------+------------+
    --------------
    COMMIT
    --------------
     
    Appuyez sur une touche pour continuer...
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

Discussions similaires

  1. [XL-2013] Problème d'ajout de valeur en fonction d'une date VBA
    Par Pierre8585 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/01/2016, 17h00
  2. Réponses: 2
    Dernier message: 06/09/2014, 18h09
  3. Réponses: 4
    Dernier message: 05/09/2014, 15h51
  4. Réponses: 1
    Dernier message: 25/04/2014, 13h39
  5. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04

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