Inserimento record da altra tabella

di il
7 risposte

Inserimento record da altra tabella

Ciao,

premetto che con SQL Server non ho molta dimestichezza.  Ho due tabelle Temp_table1 e Temp_table. Sono uguali tanto che Temp_table1 l'ho

creata  con

select * into Temp_table1  from Temp_table;

Ora ,dopo adeguata modifica di record da Temp_table1, vorrei importare i record di Tamp_table1 in Temp_table con lo stessa select ma viene visualizzato l'errore:

select * into Temp_table  from Temp_table1;

Errore SQL [2714] [S0001]: Nel database esiste già un oggetto con il nome 'Temp_table'.

Error position:

Come posso fare?

Grazie

7 Risposte

  • Re: Inserimento record da altra tabella

    Salve @Fuel666,

    provvedi ad Inserire (insert) la Proiezione (select), quindi, sintatticamente,

    INSERT nometabella ((eventuale ColumnList)
       SELECT …. la proiezione

    cioe', nel caso specifico,

    INSERT Temp_table (colX, colY, colZ
        SELECT colX, colY, colZ
            FROM Temp_table1
            WHERE x => y
                ….

    vedi comunque la sinossi del comando presso https://learn.microsoft.com/it-it/sql/t-sql/statements/insert-transact-sql?view=sql-server-ver16

    salutoni romagnoli,
    --
    Andrea

  • Re: Inserimento record da altra tabella

    Ciao,

    non ho provato senza le colonne

    INSERT Temp_table1 
    SELECT * FROM Temp_table ;

    ma da il seguente errore:

    Errore SQL [8101] [S0001]: È possibile specificare un valore esplicito per la colonna Identity nella tabella 'Temp_table1' solo quando si utilizza un elenco di colonne e IDENTITY_INSERT ha valore ON.

  • Re: Inserimento record da altra tabella

    Allora utilizzando i campi funziona.

    INSERT INTO Temp_table1 
    (REG_DataIns,REG_PERMatricola ,REG_Tipo,REG_DataOra,REG_Verso)
    SELECT REG_DataIns,REG_PERMatricola ,REG_Tipo,REG_DataOra,REG_Verso  FROM Temp_table ;

  • Re: Inserimento record da altra tabella

    Salve Fuel666,

    come hai visto, la colonna che ha l'attributo Identity impostato, NON deve normalmente essere “caricata” manualmente; e' ovviamente possibile farlo pero' impostando l'opzione SET IDENTITY INSERT (https://learn.microsoft.com/it-it/sql/t-sql/statements/set-identity-insert-transact-sql?view=sql-server-ver16)

    ovviamente, escludendo tale attivita', le righe caricate 

    INSERT … SELECT … FROM… 

    avranno la colonna “identity” popolata in maniera automatica da SQL Server, quindi un valore DIVERSO dall'originale.
    tieni a mente questa circostanza :D

    salutoni romagnoli,
    – 
    Andrea

  • Re: Inserimento record da altra tabella

    Grazie Andrea,

    Sei stato molto utile!

    Ho impostato prima 

    SET IDENTITY_INSERT temp_table1 ON

    Poi ho eseguito l'istruzione SQL INSERT … SELECT … FROM… di tutti i campi compreso quello con identità REG_Id

    e se ho capito bene in questo modo il campo avrà il valore copiato.

    Altrimenti evitando di inserire il campo con identità REG_Id quest'ultimo avrà un valore diverso da quello della tabella da cui copio.

    Corretto?

  • Re: Inserimento record da altra tabella

    Salve @Fueel666,

    e' corretto :)

    salutoni romagnoli,
    – 
    Andrea

  • Re: Inserimento record da altra tabella

    Grazie!!

Devi accedere o registrarti per scrivere nel forum
7 risposte