Che succede se faccio 'INSERT' su una vista?

di Anonimizzato14733 il
6 risposte
Ho un database di 5 tabelle, collegate con i rispettivi vincoli di foreign key.Creo una vista in cui ricavo ALCUNI degli elementi da queste tabelle.
Se dovessi fare INSERT nella vista ,e inserire appunto un record,i campi verrebbero inseriti anche nelle rispettive tabelle? Rispettando i vari vincoli?
Tenete conto ad esempio in una tabella c'erano due campi: un id e un campo stringa,di cui nella vista richiamo solo quest'ultimo: tenendo in conto che per il campo id c'è l'autoincremento, nel momento in cui tramite la vista aggiungo solo il campo string,il campo id viene creato automaticmente?

6 Risposte

  • Non si puo' fare
  • O santo cielo ,quindi qual è la soluzione più sensata per farlo?
    Vi descrivo il database:
    LIBRO (idlibro,titolo,anno,ideditore,idTema)
    AUTORE(idAutore)
    EDITORE(idEditore)
    TEMA(idTema)
    DETTAGLIAUTORE(idLibro,idAutore)

    nella form sulla mia pagina web ho bisogno di inserire questi elementi di un nuovo libro:
    titolo,anno,editore,autore,tema
  • Per definizione una vista è in sola lettura quindi non mi pare proprio tu possa inserire qualcosa ...

    Esegui tutte le INSERT che servono nelle varie tabelle racchiuse in una transazione
  • oregon ha scritto:


    Esegui tutte le INSERT che servono nelle varie tabelle racchiuse in una transazione
    Che tradotto nel linguaggio delle servlet si dovrebbe fare con il comando
    con.commit();
    giusto?
    Ma io credevo che questo servisse solo a far si che se l'inserimento in una tabella non dovesse andare a buon fine allora non viene inserito nulla nemmeno nelle altre.Invece garantisce anche l'inserimento e l'autoaggiornamento di quel campo nelle altre tabelle?
  • No ... serve a quello che hai detto, nessun "autoinserimento" ...

    Il fatto è che tutti gli ID coinvolti (nel caso di contatori autoincrementanti) saranno coerenti in quanto altri utenti che fanno richieste contemporanee non influiranno.
  • Ciao,
    allora devi fare l insert a mano x ogni tabella.
    ovviamente devi eseguirle in modo da popolare prima le pk, poi le fk relative!
    x la transazione, nn è necessaria, xò se una insert ti và male puoi tornare alla situazione precedente senza dover effetuare cancellazioni a mano...
Devi accedere o registrarti per scrivere nel forum
6 risposte