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

PHP & Base de données Discussion :

contrainte d'integrite referentielle


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 43
    Par défaut contrainte d'integrite referentielle
    bonjour j'ai réalisé ma bd sur mysql pour un mon site et pour ça j'utilise easyphp 1.8 avec mysql 5 donc j'ai téléchargé la version sans installeur et que j'ai décompressé dans le répertoire easyphp et renommé l'ancienne et ajouté ..... bref je travaille avec mysql 5 et je tape les codes suivants la bd est créée sans pb pour l'intregrité référentielle mais lors d'une suppression ou de modification rien ne se passe dans la bd

    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
    $sql = 'CREATE TABLE `abonne` ('
            . ' `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, '
            . ' `login` VARCHAR(40) NOT NULL, '
            . ' `mdp` VARCHAR(40) NOT NULL, '
            . ' `tel1` VARCHAR(20) NOT NULL, '
            . ' `tel2` VARCHAR(20), '
            . ' `nom` VARCHAR(40) NOT NULL, '
            . ' `ville` VARCHAR(40) NOT NULL, '
            . ' `local` TEXT, '
            . ' `mail` VARCHAR(40), '
            . ' `site` VARCHAR(40), '
            . ' `logo` INT, '
    		. ' `photo1` INT, '
    		. ' `photo2` INT, '
    		. ' `photo3` INT, '
            . ' `type_abo` ENUM("1","2","3") NOT NULL,'
    		. ' `date_cons` DATE NOT NULL,'
    		. ' `etat` ENUM("0","1") NOT NULL,'
    		. ' `qds` VARCHAR(75) NOT NULL, '
    		. ' `rep` VARCHAR(40) NOT NULL, '
            . ' PRIMARY KEY (`id`),'
            . ' UNIQUE (`login`)'
    		. ' )';
    $exreq1=mysql_query($sql,$connection) or die (mysql_error());
     
    $sql = 'CREATE TABLE `photo_abon` ('
            . ' `id` INT UNSIGNED AUTO_INCREMENT, '
            . ' `id_offre` INT UNSIGNED NOT NULL, '
            . ' `id_abon` INT UNSIGNED NOT NULL, '
            . ' `lien` TEXT NOT NULL,'
    		. ' `lien_vgt` TEXT NOT NULL,'
    		. ' `poids` INT UNSIGNED NOT NULL,'
    		. ' `larg` INT UNSIGNED NOT NULL,'
    		. ' `haut` INT UNSIGNED NOT NULL,'
    		. ' `format` TEXT NOT NULL,'
            . '  PRIMARY KEY (`id`),'
    		. '  FOREIGN KEY (id_abon) REFERENCES  abonne(id) ON DELETE CASCADE ON UPDATE CASCADE'
            . ' )';
     
    $exreq1=mysql_query($sql,$connection) or die (mysql_error());

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 15
    Par défaut Intégrité référentielle en MySQL
    L'intégrité référentielle n'est gérée par MySQL que si les tables utilisent le moteur InnoDB : cf http://dev.mysql.com/doc/refman/5.0/...nstraints.html
    << Depuis la version 3.23.43b, InnoDB respecte les contraintes de clé étrangères.
    La syntaxe des définitions de contraintes de clés étrangères de InnoDB est la suivante :

    [CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)
    REFERENCES tbl_name (index_col_name, ...)
    [ON DELETE {CASCADE | SET NULL | NO ACTION | RESTRICT}]
    [ON UPDATE {CASCADE | SET NULL | NO ACTION | RESTRICT}]

    Les deux tables doivent être de type InnoDB, dans la table, il doit y avoir un INDEX où les clés étrangères sont listées comme première colonne, dans le même ordre, et dans la table référencée, il doit y avoir un INDEX où les colonnes référencées sont listées comme premières colonnes, dans le même ordre.
    >>

    et aussi http://dev.mysql.com/doc/refman/5.0/...eign-keys.html
    <<
    En MySQL version 3.23.44 et plus récentes, les tables InnoDB supportent les vérifications d'intégrité référentielles. See Chapitre 15, Le moteur de tables InnoDB. Pour les autres types de tables, le serveur mySQL accepte la syntaxe FOREIGN KEY dans la commande CREATE TABLE, mais ne la prend pas en compte.
    >>

Discussions similaires

  1. intégrité référentielle non prise en compte
    Par WalidNat dans le forum Outils
    Réponses: 1
    Dernier message: 21/04/2006, 09h21
  2. Contrainte d'integrité
    Par slclinsearch dans le forum Access
    Réponses: 4
    Dernier message: 13/01/2006, 18h05
  3. pb integrité referentielle
    Par flawer dans le forum Débuter
    Réponses: 9
    Dernier message: 07/12/2005, 16h43
  4. Pb contrainte d'integrité
    Par goulhasch dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 03/02/2005, 15h36
  5. [debutant]delete et contrainte d'integrite
    Par christophebmx dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 02/11/2004, 22h18

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