2010-05-20 4 views
0

je transférer mes journaux d'accès dans une base de données.MYSQL Insertion de lignes qui font référence à des lignes principales

J'ai deux tables:

urlRequests 
id : int(10) 
host : varchar(100) 
path: varchar(300) 
unique index (host, path) 

urlAccesses 
id : int(10) 
request : int(10) <-- reference to urlRequests row 
ip : int(4) 
query : varchar(300) 
time : timestamp 

je besoin d'insérer une ligne dans urlAccesses pour chaque chargement de page, mais d'abord une ligne urlRequests doit exister avec l'hôte demandé et le chemin de sorte que la ligne de urlAccesses peut le référencer.

Je sais que je peux le faire de cette façon:

A. vérifier si une ligne existe dans urlRequests B. insérer une ligne dans urlRequests si elle en a besoin C insérer une ligne dans urlAccesses avec la ligne du urlRequests id référencé

C'est trois requêtes pour chaque chargement de la page si la ligne de urlRequests n'existe pas. Je suis très novice avec MySQL, donc je suppose qu'il y a un moyen d'y parvenir plus rapidement et d'utiliser moins de requêtes.

Répondre

0

essayez INSERT IGNORE pour insérer des lignes dans urlRequests sans passer s'il existe une ligne précédente. Ensuite, obtenez the last inserted id à la deuxième insertion.

Questions connexes