20 messaggi dal 21 settembre 2006
ho il seguente problema :

Devo copiare il contenuto di una tabella in un'altra identica.
Tutte e due però hanno una colonna Identity

l'istruzione è :

Insert InTo dbo.Dup_SP Select * from dbo.ScomposizionePrezzi

Il fatto è che mi da errore :

An explicit value for the identity column in table 'dbo.Dup_SP' can only be specified when a column list is used and IDENTITY_INSERT is ON.

ma io non voglio copiare anche il contenuto della colonna identity.
Come posso fare????
Possibile che debba dare a mano tutti i nomi delle colonne tranne quello della colonna identity??? Il fatto è che sono circa 70 campi !!!!

Non c'è un modo di ovviare questo problema????
GRAZIE 1000
1.976 messaggi dal 27 luglio 2005
Contributi
salve,
ayrton1 ha scritto:
ho il seguente problema :

Devo copiare il contenuto di una tabella in un'altra identica.
Tutte e due però hanno una colonna Identity

l'istruzione è :

Insert InTo dbo.Dup_SP Select * from dbo.ScomposizionePrezzi

Il fatto è che mi da errore :

An explicit value for the identity column in table 'dbo.Dup_SP' can only be specified when a column list is used and IDENTITY_INSERT is ON.

ma io non voglio copiare anche il contenuto della colonna identity.
Come posso fare????
Possibile che debba dare a mano tutti i nomi delle colonne tranne quello della colonna identity??? Il fatto è che sono circa 70 campi !!!!

Non c'è un modo di ovviare questo problema????
GRAZIE 1000

in effetti e' l'unico sistema...

SET NOCOUNT ON;
USE tempdb;
GO
CREATE TABLE dbo.Test1 (
  Id int NOT NULL IDENTITY PRIMARY KEY,
  c1 int DEFAULT 1,
  c2 int DEFAULT 2,
  c3 int DEFAULT 3,
  c4 int DEFAULT 4,
  c5 int DEFAULT 5,
  c6 int DEFAULT 6,
  c7 int DEFAULT 7,
  c8 int DEFAULT 8,
  c9 int DEFAULT 9,
  c10 int DEFAULT 10
  );
CREATE TABLE dbo.Test2 (
  Id int NOT NULL IDENTITY PRIMARY KEY,
  c1 int DEFAULT 1,
  c2 int DEFAULT 2,
  c3 int DEFAULT 3,
  c4 int DEFAULT 4,
  c5 int DEFAULT 5,
  c6 int DEFAULT 6,
  c7 int DEFAULT 7,
  c8 int DEFAULT 8,
  c9 int DEFAULT 9,
  c10 int DEFAULT 10
  );
GO
PRINT 'Popolamento iniziale';
DECLARE @i int;
SET @i = 1;
WHILE @i <= 100 BEGIN;
  INSERT INTO dbo.Test1 DEFAULT VALUES;
  SET @i = @i + 1;
END;
SELECT * FROM dbo.Test1;
GO
PRINT 'Trasferimento';
INSERT INTO dbo.Test2 ( c1, c2, c3, c4, c5, c6, c7, c8, c9, c10 ) 
  SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10 
    FROM dbo.Test1
    ORDER BY Id;

SELECT * FROM dbo.Test2;
GO
DROP TABLE dbo.Test1, dbo.Test2;


puoi pero' farti aiutare da SSMS o Query Analyzer, a seconda della versione di SQL Server che stai usando, che sono in grado di produrre il template di script DML INSERT INTO dove puoi tranquillamente rimuovere la colonna identity..
saluti

Andrea Montanari
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.