Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380

    [Mysql]insert in tabelle relazionate 1:1

    Ciao, mi chiedevo, date due tabelle che chiamo TABLE A e TABLE B in relazione 1:1
    dove TABLE B ha come secondary key l'id di TABLE A

    Facendo una insert in TABLE A, mi occorre last_id per poterlo poi inserire in TABLE B ora, la mia domanda è banalmente questa: l'unico algoritmo da seguire è

    INSERT su A
    ...last_id di A
    INSERT su B

    cioè eseguire queste 3 queries in sequenza? Ci sono altre strade magari ottimizzate?
    Può avvenire un errore di "processamento" degl id?
    Grazie
    If you think your users are idiots, only idiots will use it. DropBox

  2. #2
    Utente bannato
    Registrato dal
    Dec 2012
    Messaggi
    679

    Re: [Mysql]insert in tabelle relazionate 1:1

    Originariamente inviato da homerbit
    Ciao, mi chiedevo, date due tabelle che chiamo TABLE A e TABLE B in relazione 1:1
    dove TABLE B ha come secondary key l'id di TABLE A

    Facendo una insert in TABLE A, mi occorre last_id per poterlo poi inserire in TABLE B ora, la mia domanda è banalmente questa: l'unico algoritmo da seguire è

    INSERT su A
    ...last_id di A
    INSERT su B

    cioè eseguire queste 3 queries in sequenza? Ci sono altre strade magari ottimizzate?
    Può avvenire un errore di "processamento" degl id?
    Grazie
    certo che può avvenire, è sbagliata proprio come logica di funzionamento.
    Potresti creare una transazione unica, così come un trigger, ma le prestazioni sono bassissime.

    Decisamente meglio
    - crea una chiave primaria per A
    - inseriscila in A
    - inseriscila in B
    fine del dramma (per la verità c'è il problema dello scattering delle foglie, ma dubito fortemente che ciò ti riguardi)

    Per la generazione della chiave primaria non hai che l'imbarazzo della scelta
    - a mano, fatta da te
    - uuid
    - uuid trasformato in unhex
    - uuid_short
    - variazioni sul tema

  3. #3
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380

    Re: Re: [Mysql]insert in tabelle relazionate 1:1

    Originariamente inviato da franzauker2.0
    certo che può avvenire, è sbagliata proprio come logica di funzionamento.
    Potresti creare una transazione unica, così come un trigger, ma le prestazioni sono bassissime.

    Decisamente meglio
    - crea una chiave primaria per A
    - inseriscila in A
    - inseriscila in B
    fine del dramma (per la verità c'è il problema dello scattering delle foglie, ma dubito fortemente che ciò ti riguardi)
    scusami ma non ho capito
    la chiave primaria per A sarebbe il suo id autoincrement e per inserirla in B mi occorre leggerla..
    If you think your users are idiots, only idiots will use it. DropBox

  4. #4
    Utente bannato
    Registrato dal
    Dec 2012
    Messaggi
    679

    Re: Re: Re: [Mysql]insert in tabelle relazionate 1:1

    Originariamente inviato da homerbit
    scusami ma non ho capito
    la chiave primaria per A sarebbe il suo id autoincrement e per inserirla in B mi occorre leggerla..
    Elimina "autoincrementante" dalle tue idee.
    La chiave primaria di A è qualsiasi campo che sia una... chiave primaria.
    Nessuno ti vieta di generarla (la chiave primaria) o farla generare (a mysql) e poi scriverla nel relativo campo.
    In pseudocodice
    codice:
    chiave_primaria= (da mysql)select uuid_short()
    inse rt i nto tabellaA (chiave,...) values (chiave_primaria,...)
    inse rt in to tabellaB (chiave,...) values (chiave_primaria,...)

  5. #5
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    quindi dovrei utilizzare una chiave generata o che sia il un'altra variabile inserita in entrambe le tabelle ovviamente...
    in questo modo evito di andare a leggere last_id
    ho capito bene ?

    però il mio topic nasce proprio dal fatto che tutte le tabelle in relazione che ho visto hanno sempre l'id in comune!
    If you think your users are idiots, only idiots will use it. DropBox

  6. #6
    Utente bannato
    Registrato dal
    Dec 2012
    Messaggi
    679
    Originariamente inviato da homerbit
    quindi dovrei utilizzare una chiave generata o che sia il un'altra variabile inserita in entrambe le tabelle ovviamente...
    in questo modo evito di andare a leggere last_id
    ho capito bene ?
    Hai capito benissimo
    però il mio topic nasce proprio dal fatto che tutte le tabelle in relazione che ho visto hanno sempre l'id in comune!
    Perchè sono, per lo più, fatte da bimbiminkia.

  7. #7
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    Originariamente inviato da franzauker2.0
    Perchè sono, per lo più, fatte da bimbiminkia.
    in effetti di roba in giro ne ho vista troppa anch'io..
    GRAZIE per avermi illuminato
    If you think your users are idiots, only idiots will use it. DropBox

  8. #8
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    ehm potresti dirmi come poter generare questa chiave univoca con mysql?
    If you think your users are idiots, only idiots will use it. DropBox

  9. #9
    Ciao,

    tabelle relazionate 1:1 non mi piacciono molto. Non si potrebbe unire tutto in un unica tabella?
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  10. #10
    Utente bannato
    Registrato dal
    Dec 2012
    Messaggi
    679
    Originariamente inviato da homerbit
    ehm potresti dirmi come poter generare questa chiave univoca con mysql?
    scritto sopra
    codice:
    select uuid_short()

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.