Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Electro
    Registrato dal
    Dec 2003
    Messaggi
    565

    Dipendenza tabelle, un chiarimento...

    Ho un sito con Prestashop. Ho dovuto compiere una modifica di massa dei prezzi di tutti i prodotti, tramite una singola query. Nulla di particolare, ho soltanto dimezzato tutti i prezzi.

    L'ho eseguita direttamente su phpmyadmin, sulla tabella product_shop. L'operazione è andata a buon finee ho ottenuto il risultato sperato. Navigando su phpmyadmin, ho però notato una cosa strana. La tabella product, (che contiene altre colonne sui prodotti) contiene anche lei una colonna "price", e stranamente, la modifica che ho apportato ai prezzi nell'altra tabella, risulta applicata anche su questa.

    Come è possibile? Esiste qualche forma di dipendenza sql, tipo un link, che fà questo?


    PS Non pestatemi per le mie domande, diciamo che di linguaggio SQL, non ne ho mai saputo molto...
    Nulla

  2. #2
    Probabilmente product_shop è una vista, oppure product è una vista. Una vista non è altro che una query che estrae dati da una o più tabelle fisiche (o da altre viste). Se la vista ha una struttura semplice, puoi inserire dati come se fosse una tabella, e questi dati vengono scritti nella tabella fisica; se la struttura non è abbastanza semplice (o comunque se MySQL non è in grado di collegare i record della vista a quelli delle tabelle) la vista può solo essere letta.

    Un'altra possibile spiegazione è che product_shop abbia un Trigger BEFORE UPDATE o AFTER UPDATE, ovvero una procedura scritta in SQL che si attiva quando esegui una UPDATE. I trigger possono essere usati per "sincronizzare" due tabelle, anche se nel caso che hai descritto probabilmente non è una buona idea.

    Se sei in hosting, difficilmente hai i permessi per creare un trigger, quindi si tratterà di una vista.
    STK/Unit: Unit Test framework per MariaDB
    http://stk.wikidot.com/stk-unit

  3. #3
    Dimenticavo che esiste una terza possibilità. Se una delle tabelle è di tipo Merge e l'altra è di tipo MyISAM, quella di tipo Merge contiene quella di tipo MyISAM. Ma è una cosa che non vedo fare da secoli.
    STK/Unit: Unit Test framework per MariaDB
    http://stk.wikidot.com/stk-unit

  4. #4
    Utente di HTML.it L'avatar di Electro
    Registrato dal
    Dec 2003
    Messaggi
    565
    Allora ho verificato, non ci sono trigger, e le tabelle sono InnoDB. Quindi deve trattarsi sicuramente della terza possibilità, cioè una vista.

    Come faccio a capire da phpmyadmin che è una vista?
    Nulla

  5. #5
    Utente di HTML.it L'avatar di Electro
    Registrato dal
    Dec 2003
    Messaggi
    565
    Originariamente inviato da Electro
    Allora ho verificato, non ci sono trigger, e le tabelle sono InnoDB. Quindi deve trattarsi sicuramente della terza possibilità, cioè una vista.

    Come faccio a capire da phpmyadmin che è una vista?
    Allora sono andato nel DB INFORMATION_SCHEMA, e nella tabella views, no trovato 0 records. Suppongo quindi non abbia views. Esiste un metodo più efficace con phpmyadmin per capirlo?

    Quindi mi sà che non si tratta neppure di views...
    Nulla

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.