Domanda
Ho tre tabelle che essenzialmente a cascata verso il basso, come:
- topic
- sezione (i riferimenti argomento id)
- sottosezione (riferimenti argomento id e la sezione id)
Che cosa è il miglior metodo di scrittura dichiarazioni MySQL per creare il primo argomento / sezione / sottosezione in modo da poter afferrare del id (auto_incremented) delle righe appena creati e li usa per inserirli nella seconda due?
modifica Sto utilizzando phpbb3, so se questo fa la differenza enorme, ma io di solito utilizzare la funzione $ db-sql_query ()
Soluzione
Da genitore, su tutta la linea.
Quindi è possibile utilizzare sia LAST_INSERT_ID () , o INSERT nel SELECT:
INSERT INTO TOPIC
(topic_id, topic)
VALUES (DEFAULT, $topic);
INSERT INTO SECTION
(topic_id, section)
SELECT topic_id, $section
FROM TOPIC
WHERE topic = $topic
INSERT INTO SUBSECTION
(section_id, topic_id, subsection)
SELECT section_id, topic_id
FROM SECTION
WHERE section = $section
Questo esempio presuppone che TOPIC.topic_id
, SECTION.section_id
e SUBSECTION
sono auto_increment, colonne chiave primaria.
Altri suggerimenti
È possibile utilizzare mysql_insert_id () per ottenere l'ultimo ID inserto. vedi riferimento per ulteriori dettagli.
Per quanto ho capito, c'è un solo modo, che è top-down.
Per aggiungere una sottosezione a una sezione, devi avere avuto una sezione già inserita.
Per aggiungere un argomento per una sottosezione, assicurarsi che si è aggiunto il comma primo.
Lungo la strada, a tenere traccia degli ultimi ID inserito (se avete appena creato è) per dare al prossimo entità su tutta la linea.