PDA

View Full Version : سوال: چرا Identity از 20 میپره رو1002؟!



kkkaka
پنج شنبه 16 شهریور 1391, 19:18 عصر
سلام به همه :چشمک:
من یه جدول دارم که توش یه ستون از نوع int وبصورت Identity تعریف کردم بعد که با برنامه بهش مقدار میدم
از یک تا 20 درست میره ولی بعش یهو میپره رو 1002 و به ترتیب 1003و1004 و... همینطور اضافه میشه.
لطفآ بنده رو راهنمایی کنید...

kkkaka
جمعه 17 شهریور 1391, 11:40 صبح
نه واقعآ چرا؟!

tooraj_azizi_1035
شنبه 18 شهریور 1391, 09:18 صبح
این به این خاطر هست که رکوردهایی حذف شده اند. یا باید Identity رو ریست کنید یا با Sequence Object در 2012 کار کنید که دیگه چنین مشکلاتی نداره.

tooraj_azizi_1035
جمعه 07 مهر 1391, 12:15 عصر
و اگه اصرار داری با همین ورژن کار کنی باید یه تریگر حساس به حذف بنویسی تا بعد از حذف یه رکورد بیاد مقدار Identity رو به MAX ستون مورد نظر ست کنه.



/****** Object: Trigger [dbo].[AdjustID] Script Date: 09/18/2012 20:44:19 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Tooraj Azizi
-- Create date: 1391/06
-- Description: Controls increment step after delete.
-- =============================================
CREATE TRIGGER [dbo].[AdjustID]
ON [dbo].[Customer]
AFTER DELETE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

DECLARE @NewID bigint=(SELECT MAX(CustomerID) FROM Customer);

DBCC CHECKIDENT ("Customer", RESEED, @NewID);
-- Insert statements for trigger here

END