Mostra notizie nelle discussioni
  • Avatar
    Scritto da
    Non Autenticato
    il 2008-07-24 12:42:00.0 alle 2008-07-24 12:42:00.0
    SQL Quiz
    tabella1 ha (chiave1, valore1)

    tabella2 ha (chiave2, valore1_fk)

    con valore1_fk foreign key su tabella1.valore1

    come faccio ad aggiornare valore1 e far aggiornare valore1_fk?
    Non posso fare alter table o similia, gli schemi sono fissi.
    Devo per forza creare un appoggio a cui far puntare la foreign key?
    Su oracle 10.
    • Avatar
      Scritto da
      Non Autenticato
      il 2008-07-24 14:09:00.0 alle 2008-07-24 14:09:00.0
      Re: SQL Quiz

      - Scritto da:
      > tabella1 ha (chiave1, valore1)
      >
      > tabella2 ha (chiave2, valore1_fk)
      >
      > con valore1_fk foreign key su tabella1.valore1
      >
      > come faccio ad aggiornare valore1 e far
      > aggiornare
      > valore1_fk?
      > Non posso fare alter table o similia, gli schemi
      > sono
      > fissi.
      > Devo per forza creare un appoggio a cui far
      > puntare la foreign
      > key?
      > Su oracle 10.

      Se non hai la possibilità di dichiarare i cascading updates per la FK allora la strada canonica è cancellare la riga da tabella2, aggiornare la riga in tabella1, inserire la riga con il nuovo valore in tabella2. Il tutto in una transazione.

      Non capisco cosa vuoi dire con "creare un appoggio".
      • Avatar
        Scritto da
        Non Autenticato
        il 2008-07-24 14:13:00.0 alle 2008-07-24 14:13:00.0
        Re: SQL Quiz

        - Scritto da:
        >
        > - Scritto da:
        > > tabella1 ha (chiave1, valore1)
        > >
        > > tabella2 ha (chiave2, valore1_fk)
        > >
        > > con valore1_fk foreign key su tabella1.valore1
        > >
        > > come faccio ad aggiornare valore1 e far
        > > aggiornare
        > > valore1_fk?
        > > Non posso fare alter table o similia, gli schemi
        > > sono
        > > fissi.
        > > Devo per forza creare un appoggio a cui far
        > > puntare la foreign
        > > key?
        > > Su oracle 10.
        >
        > Se non hai la possibilità di dichiarare i
        > cascading updates per la FK allora la strada
        > canonica è cancellare la riga da tabella2,
        > aggiornare la riga in tabella1, inserire la riga
        > con il nuovo valore in tabella2. Il tutto in una
        > transazione.
        >
        > Non capisco cosa vuoi dire con "creare un
        > appoggio".

        Creare un appoggio: update della fk verso un record di tabella1 fittizzio, update tabella1 e update tabella2 con nuovo valore.

        Invece gli update a cascata non possono essere dichiarati con un istruzione specifica per la transazione invece di impostare l'azione come "default" per la tabella?
        Mi spiego da cani Imbarazzato Imbarazzato Imbarazzato
        • Avatar
          Scritto da
          Non Autenticato
          il 2008-07-25 00:12:00.0 alle 2008-07-25 00:12:00.0
          Re: SQL Quiz

          - Scritto da:
          >
          > - Scritto da:
          > >
          > > - Scritto da:
          > > > tabella1 ha (chiave1, valore1)
          > > >
          > > > tabella2 ha (chiave2, valore1_fk)
          > > >
          > > > con valore1_fk foreign key su tabella1.valore1
          > > >
          > > > come faccio ad aggiornare valore1 e far
          > > > aggiornare
          > > > valore1_fk?
          > > > Non posso fare alter table o similia, gli
          > schemi
          > > > sono
          > > > fissi.
          > > > Devo per forza creare un appoggio a cui far
          > > > puntare la foreign
          > > > key?
          > > > Su oracle 10.
          > >
          > > Se non hai la possibilità di dichiarare i
          > > cascading updates per la FK allora la strada
          > > canonica è cancellare la riga da tabella2,
          > > aggiornare la riga in tabella1, inserire la riga
          > > con il nuovo valore in tabella2. Il tutto in una
          > > transazione.
          > >
          > > Non capisco cosa vuoi dire con "creare un
          > > appoggio".
          >
          > Creare un appoggio: update della fk verso un
          > record di tabella1 fittizzio, update tabella1 e
          > update tabella2 con nuovo
          > valore.

          Mi sembra una porcata.
          Rimango per il delete, update, insert.

          Al limite se sono più righe: inserisci quelle di tabella2 in una tabella temporanea, le cancelli da tabella2, aggiorni tabella 1, inserisci le righe da tabella temporanea a tabella2 specificando il nuovo valore per il campo.

          > Invece gli update a cascata non possono essere
          > dichiarati con un istruzione specifica per la
          > transazione invece di impostare l'azione come
          > "default" per la
          > tabella?

          Non mi pare. Poi non so se il dialetto Oracle lo permette o se qualche versione dell'Ansi > 92 lo permette in teoria.
<softv>

Pagina generata in 44 millisecondi

Utenti attivi: 8 nell'ultimo minuto, 22 negli ultimi cinque minuti, 47 negli ultimi 15 minuti