Forum Programmation.SQL mysql clé étrangère dans une autre base de données

Posté par (page perso) .
Tags : aucun
0
15
mai
2006
Bonjour,
J'utilise mysql 5.0 et j'ai besoin de créer des tables dans une bd dont les champ sont des clés étrangères dans d'autres bd.

J'ai essayé la ligne suivante :

create table user_test ( username varchar(255) references syscp.mail_users(username), password varchar(128) references syscp.mail_users(password) ,primary key (username));



mais je n'obtiens aucuns résultat :
mysql> select * from user_test ; Empty set (0.00 sec)


or


mysql> select username,password from syscp.mail_users;
+--------------------------------+---------------+
| username | password |
+--------------------------------+---------------+
| (...) | (...) |
+--------------------------------+---------------+

17 rows in set (0.00 sec)



me renvoie bien les valeurs ...

mais je ne vois pas ce que j'ai loupé.
  • # table vide ?

    Posté par . Évalué à 3.

    Est ce que tu l'a remplis ta table user_test ?

    parce que mettre des contraintes de clés étrangères ne remplis pas la table automatiquement ... ça assure juste que les lignes que tu vas ajouter contiennent bien des informations qui existent déjà dans la table de référence.

    Dam
  • # MySQL + Clés étrangères

    Posté par . Évalué à 2.

    Bonjour, Est-tu sure de la syntaxe ? Car, ainsi cela aurait été plus approprié :
    CREATE TABLE user_test (
        username_ref varchar(255),
        password_ref varchar(128),
        FOREIGN KEY (username_ref) REFERENCES syscp.mail_users(username) ON DELETE CASCADE
        FOREIGN KEY (password_ref) REFERENCES syscp.mail_users(password) ON DELETE CASCADE
        primary key (username_ref)
    );
    Je n'ai pas pu vérifier. Donc à tester. Bon courage.
  • # c'est mal

    Posté par (page perso) . Évalué à 3.

    rapatrie plutôt en local les tables dont tu as besoin

    ça ne va pas le faire en exploitation d'avoir deux bases différentes ainsi liées... (tu ne peux pas arrêter l'autre sans vautrer ton appli).

    Si tu as réellement besoin des clés sur des données de l'autre base, cela signifie qu'il vaut mieux ne faire qu'une base de données vu qu'elles manipulent les mêmes données.
    • [^] # Re: c'est mal

      Posté par (page perso) . Évalué à 1.

      Je suis d'accord mais je ne peux pas faire fusionner les deux tables.
      je pense que je vais écrire un script qui synchronise les deux BD.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.