16 messaggi dal 27 giugno 2007
Salve a tutti,
ho una tabella SQL 2000 con una colonna identity implementata automaticamente ad ogni inserimento di nuovi record, con intervalli di 1.
Avrei la necessità di una query che mi evidenzi in qualche modo eventuali interruzioni nella corretta sequenza della numerazione di tale colonna. In pratica quello che succede quando vengono cancellati records.
C'è una soluzione rapida?
Grazie.
1.976 messaggi dal 27 luglio 2005
Contributi
salve,
allforum ha scritto:
Salve a tutti,
ho una tabella SQL 2000 con una colonna identity implementata automaticamente ad ogni inserimento di nuovi record, con intervalli di 1.
Avrei la necessità di una query che mi evidenzi in qualche modo eventuali interruzioni nella corretta sequenza della numerazione di tale colonna. In pratica quello che succede quando vengono cancellati records.
C'è una soluzione rapida?
Grazie.

ti puoi basare su una "tabella di appoggio", la cosidetta "tabella dei numeri" che molto spesso viene implementata nelle basi dati, e quindi ottenerne la "differenza", similarmente a
SET NOCOUNT ON;
USE tempdb;
GO
PRINT 'tabella di appoggio';
CREATE TABLE dbo.Numeri (
Numero int NOT NULL
);
GO
PRINT 'tabella reale';
CREATE TABLE dbo.Oggetto (
Id int NOT NULL
);
GO
PRINT 'popolamento tabella di appoggio';
DECLARE @i int;
SET @i = 1;
WHILE @i <= 1000 BEGIN
INSERT INTO dbo.Numeri VALUES ( @i );
SET @i = @i + 1;
END;
GO
PRINT 'popolamento tabella reale';
DECLARE @i int;
SET @i = 1;
WHILE @i <= 1000 BEGIN
INSERT INTO dbo.Oggetto VALUES ( @i );
SET @i = @i + 1;
END;
GO
PRINT 'creazione di "buchi" nella tabella reale';
DELETE
FROM dbo.Oggetto
WHERE 4 & Id = 4;

--SELECT * FROM dbo.Oggetto;
GO
PRINT 'recupero dei "buchi"';
SELECT Numero
FROM dbo.Numeri n
LEFT JOIN dbo.Oggetto o
ON o.Id = n.Numero
WHERE o.Id IS NULL;
GO
DROP TABLE dbo.Oggetto, dbo.Numeri;

saluti

Andrea Montanari
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php
16 messaggi dal 27 giugno 2007
...... geniale ......
domani ci provo subito. Grazie

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.