Povia e il concerto annullato: ‘etichettato come cantante di destra’
Musica: il cantante Povia polemico con l’estremizzazione: ‘il mio concerto è stato annullato, perchè etichettato come cantante di destra’ Il ...
Musica: il cantante Povia polemico con l’estremizzazione: ‘il mio concerto è stato annullato, perchè etichettato come cantante di destra’ Il ...
Un sondaggio ha evidenziato ancora una volta, quello che purtroppo già da qualche anno era venuto alla luce: La Gen ...
Un ritrovamento ha scosso il mondo dell’archeologia: scoperto il segreto della ‘Mummia urlante’ Nel 1935, una spedizione archeologica a Deir ...
Il caffè può essere un alleato quotidiano per il benessere fisico dell’intestino, selezionando i batteri buoni del microbiota, ma come? ...
Carceri, il trend è allucinante. dal 2014 a oggi sono stati oltre 600 i suicidi e si rischia un triste ...
Dalla paralisi all’infarto, cosa rischi se ti colpisce un fulmine In Italia, la stagione estiva porta con sé non solo ...
L’altro giorno al lavoro mi sono trovato in questa situazione in cui dovevo mandare uno script ad un cliente per creare un campo identity(contatore) su una tabella precedentemente creata. Dopo un po di lavoro sono riuscito a fare questo script che vorrei condividere con voi.
Il mio esempio si basa su una tabella A con due colonne (Primo e Secondo) dove Primo è un intero mentre Secondo è stato dichiarato come varchar. La prima fase sono il settaggio delle variabili di sql server perfare questa cosa.
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
Dopo il settaggio di queste variabili di SQL Server 2005, ma la stessa cosa bisogna fare anche su SQL Server 2008 (ho personalmente testato questa cosa), no si può aggiungere direttamente il campo identity sulla colonna che vogliamo noi ma bisogna creare una tabella temporanea Temp_A, identica alla prima ma con la proprietà identity impostata, e poi copiare tutti i dati che risiedevano nella nostra tabella originale sulla tabella temporanea.
CREATE TABLE dbo.Tmp_A
(
Primo int NOT NULL IDENTITY (1, 1),
Secondo varchar(50) NULL
) ON [PRIMARY]
GO
SET IDENTITY_INSERT dbo.Tmp_A ON
GO
IF EXISTS(SELECT * FROM dbo.A)
EXEC(‘INSERT INTO dbo.Tmp_A (Primo, Secondo)
SELECT Primo, Secondo FROM dbo.A WITH (HOLDLOCK TABLOCKX)’)
GO
SET IDENTITY_INSERT dbo.Tmp_A OFF
GO
A questo non ci resta che cancellare la nostra tabella di partenza per poi rinominare quella temporanea con lo stesso nome della nostra tabella originale.
DROP TABLE dbo.A
GO
EXECUTE sp_rename N’dbo.Tmp_A’, N’A’, ‘OBJECT’
GO
COMMIT
Cosi sono riuscito a risolvere il problema del cliente. Spero di esservi stato utile anche a voi.
© 2024 G Tech Group S.R.L.S. – Via di Gagia 22, 38086 Giustino (TN) – P.IVA 02743570224 – REA TN – 246638 – SDI SZLUBAI -PEC gtechgroupsrls@postacert.eu