Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    867

    [MYSQL] Simulare sequence

    Ciao a tutti,
    ho la necessità di simulare una sequence tipo Oracle per avere degli id univoci su diverse tabelle.
    Per la maniera in cui gestire la sequence non ho problemi, mentre li ho per inizializzare la cosa, perchè le tabelle a cui devo aggiungere la colonna esistono già.

    ESEMPIO:

    Tabella 1
    id_1 nome_1
    1 ciao
    2 hola

    tabella 2
    id_2 nome_2
    1 bello
    2 brutto

    In pratica devo inserire in entramebe le tabelle una nuova colonna id che abbia nella prima tabella i valori 1 e 2 e nella seconda tabella i valori 3 e 4, pero' non voglio dover scorrere i record delle tabelle per fare l'aggiornamento in quanto le tabelle sono enormi.

    C'è il modo di raggiungere l'obiettivo giocando con alter table e degli auto_increment provvisori e dicendogli da che numero partire ? Ho fatto delle prove ma non ne vengoa capo.

    Ogni suggerimento o insulto è gradito
    No pvt per sollecitare risposte, grazie.

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Potresti provare una cosa del genere. Aggiungi alla tabella 2 un nuovo campo id.

    codice:
    set @max = (select max(id) from tabella_1);
    
    create temporary table pippo (
    select id,@max:= @max + 1 as mag from tabella_2 order by id asc)
    
    update tabella_2,pippo set tabella_2.nuovo_id = pippo.mag
    where tabella_2.id = pippo.id

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    867
    Grazie, alla fine mi è sembrato un metodo intelligente.
    Buona giornata
    No pvt per sollecitare risposte, grazie.

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.