Bonjour,
Je ne trouve pas comment créer les contraintes d'intégrité référentielle avec phpmyadmin quelqu'un peut me dire comment faire svp ? En évitant d'effacer ma base et de recommencer à 0 car elle existe déjà ?
Merci d'avance...
Bonjour,
Je ne trouve pas comment créer les contraintes d'intégrité référentielle avec phpmyadmin quelqu'un peut me dire comment faire svp ? En évitant d'effacer ma base et de recommencer à 0 car elle existe déjà ?
Merci d'avance...
je crois qu'il faut les taper dans l'editeur sql
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 CREATE TABLE parent (id INT NOT NULL, PRIMARY KEY (id) ) ENGINE=INNODB; CREATE TABLE child (id INT, parent_id INT, INDEX par_ind (parent_id), FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE ) ENGINE=INNODB;
Dernière modification par Eusebius ; 09/10/2006 à 11h33. Motif: pensez aux balises [code] (#)
je crois que ça depend aussi de la version de mysql que tu utilises. je crois que ya des versions qui ne gèrent pas assez bien les contraintes referentielles (sous reserve)
EasyPHP 1.7 et c'est du PHP4 si je ne me trompe pas. Autrement dit il faut que je recommence ma base ?Envoyé par ouatmad
Je l'ai faite simple au maximum:
Est-elle correcte svp ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 CREATE TABLE emprunteur( numemp INT, nomemp VARCHAR( 30 ) , nomfilm VARCHAR( 60 ) , FOREIGN KEY ( nomfilm ) REFERENCES films( nomfilm ) ON DELETE CASCADE );
ça devrait pouvoir marché. Au fait il parait que les contraintes d'integrité sont gérées a partir de la version 3 de mysql.
Si tu as des difficultés pour les contraintes reférentielles, tu peux utiliser Dbdesigner, ça genere aisément la base (ses contraintes avec)
Oui merci pour le conseil, je ne connaissais pas, je viens de l'installer. Pourrais tu me dire comment je peux indiquer les contraintes stp ?Envoyé par ouatmad
Ca m'a donné:
Je sais pas trop si c'est correct, moi ça me fait bizarre quand meme
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 CREATE TABLE emprunteur ( numemp INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, nomemp VARCHAR(20) NULL, numfilm INTEGER UNSIGNED NULL, PRIMARY KEY(numemp) ); CREATE TABLE films ( numfilm INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, emprunteur_numemp INTEGER UNSIGNED NOT NULL, nomfilm VARCHAR(45) NULL, genrefilm VARCHAR(20) NULL, posfilm INTEGER UNSIGNED NULL, PRIMARY KEY(numfilm, emprunteur_numemp), INDEX films_FKIndex1(emprunteur_numemp) );
Bonjour,
Sinon je pense on peut creer les tables avec phpmyadmin et ajouter des alters apres, genre:
ALTER TABLE messages ADD FOREIGN KEY ( idexp ) REFERENCES utilisateurs( id ) ON DELETE CASCADE
Cordialement.
désolé je débarque mais bon je rame sec la je n'aarive pas a faire une clé étrangère voila mes table :
REQUETE CREATION DRO :
besoin d'aide merci bcp bcp BCP
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 CREATE TABLE `dro` ( `id_dro` TINYINT NOT NULL AUTO_INCREMENT PRIMARY KEY , `nom_dro` VARCHAR( 25 ) NOT NULL ) TYPE = InnoDB ; // permet de mettre des clé étrangère! REQUETE CREATION AGENCE : CREATE TABLE agence ( id_agence INT NOT NULL AUTO_INCREMENT PRIMARY KEY, nom_agence VARCHAR(25)NOT NULL, trigramme VARCHAR(3)NOT NULL, adresse_rue_agence VARCHAR(20)NOT NULL, adresse_ville_agence VARCHAR(20) NOT NULL, adresse_cp_agence INT NOT NULL, id_dro INT, FOREIGN KEY (id_dro) REFERENCES dro (id_dro) ON DELETE CASCADE )TYPE = InnoDB;
ben voila :
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 CREATE TABLE agence( id_agence INT NOT NULL AUTO_INCREMENT PRIMARY KEY , nom_agence VARCHAR( 25 ) NOT NULL , trigramme VARCHAR( 3 ) NOT NULL , adresse_rue_agence VARCHAR( 20 ) NOT NULL , adresse_ville_agence VARCHAR( 20 ) NOT NULL , adresse_cp_agence INT NOT NULL , id_dro INT, FOREIGN KEY ( id_dro ) REFERENCES dro( id_dro ) ON DELETE CASCADE ) TYPE = InnoDB MySQL a répondu: #1005 - Can't create table '.\soustraitant\agence.frm' (errno: 15
L'erreur me saute pas aux yeux, je sais pas ce qu'es l'erreur 15.
Mais si tu n'as qu'une seule colonne sur ta FOREIGN KEY tu peux la mettre directement sur la colonne (avec REFERENCES) comme la PRIMARY KEY, ce qui donnerais un truc du genre :
Essaye cette syntaxe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 CREATE TABLE agence ( id_agence INT NOT NULL AUTO_INCREMENT PRIMARY KEY, nom_agence VARCHAR(25)NOT NULL, trigramme VARCHAR(3)NOT NULL, adresse_rue_agence VARCHAR(20)NOT NULL, adresse_ville_agence VARCHAR(20) NOT NULL, adresse_cp_agence INT NOT NULL, id_dro INT REFERENCES dro (id_dro) ON DELETE CASCADE )TYPE = InnoDB;
Sinon dans ta table dro tu met le caractère ` pour le nom de table et les noms de colonnes alors que tu le met pas dans la table agence, je sais pas trop si ca peux causer problème
lol pas de message d'erreur alors maintenant il faut que je test si ca marche, merci
non ca ne marche pas pour car je créer un dro une agence avec le dro qui va bien et si je supprime le dro il me supprime pas mon agence et il me met aucun message d'erreur du style attention si vous supprimer cette ligne ou un truc comme ca donc ben c'est pas encor ca je vai tester un autre truc je revien
merci
avec ca je pensse que c'est bon :
pour ceux qui sont en galère :
si tu sais comment vider le cache web en php je prend je sais que c'est pas le bon post mais bon je test, hihi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 CREATE TABLE parent (id INT NOT NULL, PRIMARY KEY (id) ) ENGINE=INNODB; CREATE TABLE child (id INT, parent_id INT, CONSTRAINT FK_Parent FOREIGN KEY (parent_id) REFERENCES parent(id) ) ENGINE=INNODB;
ca marche po
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 CREATE TABLE agence( id_agence INT NOT NULL AUTO_INCREMENT PRIMARY KEY , nom_agence VARCHAR( 25 ) NOT NULL , trigramme VARCHAR( 3 ) NOT NULL , adresse_rue_agence VARCHAR( 20 ) NOT NULL , adresse_ville_agence VARCHAR( 20 ) NOT NULL , adresse_cp_agence INT NOT NULL , id_dro INT, CONSTRAINT fk_dro FOREIGN KEY ( id_dro ) REFERENCES dro( id_dro ) )ENGIN = InnoDB MySQL a répondu: #1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ENGIN = InnoDB' at line 10
Ca serait pas juste le point-virgule qui manque en fin de ta requête ?
Et vire CONSTRAINT, je ne sais pas à quoi ca sert mais c'est pas nécessaire
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager