I'm building a SQL script to reset a database. To do this I want to empty several (not all) tables and reset their identity values to 0.

For some tables I use TRUNCATE TABLE, but this does not work when the table has is referenced by a foreign key constraint. For those tables I use DBCC CHECKIDENT(TableName, RESEED, 0). This works for most tables, but not for all. If a table never had any data, the current identity value is NULL instead of 0:

CREATE TABLE TableName (Id int identity, Value varchar(10))
DBCC CHECKIDENT(TableName)

-- Checking identity information: current identity value 'NULL', current column value 'NULL'.


If I use DBCC CHECKIDENT(TableName, RESEED, 0) on them, they will have 0 as next identity value. I can instead use 1 as reseed value, but then the tables which have had data in them will start on 2.

Is it possible to find the next identity value in any of the sys-views? If I just could get next value into a variable, I could use it to set next value to either 0 or 1. I've tried with IDENT_CURRENT('TableName') but it says 1 for both NULL and 0 as next value.

And please, I don't want any questions like "why do you need all of them to start from 1" or any other question suggesting another result than the one I'm asking for.


Question: Does this statement make any sense?
Answer: This doesn't make much sense: light year is in any case a unit of distance.

What is common is to use "reduced units", for examples units where $c=1$ (speed of light) or $h=2\pi$. But in these cases the opposite would happen: you would say "year" to mean a distance. Or for example you say "has a mass of xyz MeV" instead of "$MeV/c^2$".



About the Fourier transform: this allow to go from the so-called "time domain" (even if "time" is not always the usual time) to the "frequency domain" involving ... frequencies.

But as you can see this cannot change the definition of light-year.