2009-11-21 6 views
0

J'ai un site qui est essentiellement une collection de liens. Une base de données mysql qui stocke les utilisateurs, les liens et les votes. Ma table de liens a deux clés étrangères, user_id et vote_id. Quand un lien est inséré dans la base de données, il commence avec un vote, ce qui signifie que je dois insérer une ligne dans la table des votes, mais ils dépendent essentiellement l'un de l'autre pour exister. J'ai besoin de l'ID des liens pour la clé étrangère de la table des votes et vice versa. Mon "plan" actuel est d'insérer une ligne de liens avec un vote_id de 0, sélectionnez la même ligne pour obtenir son identifiant puis insérez une ligne de votes en utilisant l'identifiant de ligne de liens comme clé étrangère, sélectionnez son identifiant et mettez à jour ma ligne de liens . Cela semble vraiment inefficace, mais je dois m'assurer que les votes des utilisateurs sont enregistrés pour le temps et éliminer les votes en double. Est-ce que je vais à ce sujet dans le mauvais sens?Le moyen le plus efficace pour insérer deux lignes qui dépendent les uns des autres

Répondre

1

En PHP, vous pouvez utiliser mysql_insert_id:

mysql_query("INSERT INTO mytable (product) values ('kossu')"); 
printf("Last inserted record has id %d\n", mysql_insert_id()); 

Vous pouvez l'utiliser pour obtenir la ligne ID du lien nouvellement inséré.

En supposant qu'un vote ne puisse appartenir qu'à un seul lien, la table des liens ne devrait pas avoir de colonne vote_id. Vous ne devriez donc pas avoir besoin de l'identité du vote nouvellement inséré.

+0

Wow, haha, vous avez absolument raison. Je vous remercie! Je n'ai aucune idée de ce que je pensais! –

Questions connexes