PDA

View Full Version : تعریف چند فیلد Identity



sarasara
دوشنبه 14 مرداد 1387, 15:02 عصر
سلام، من نیاز دارم توی tableام دوتا فیلد Identity داشته باشم اما ظاهرا SQL اجازه تعریف بیشتر از یکی رو نمی ده ....
کسی می دونه چیکار باید کرد؟

ASKaffash
دوشنبه 14 مرداد 1387, 15:49 عصر
سلام
هم در 2000 و هم در 2005 تست کردم نمی شود پس به دنبال روش دیگری باشید
موفق باشید.

AminSobati
دوشنبه 14 مرداد 1387, 22:10 عصر
بله هر جدول یک فیلد Identity میتونه داشته باشه. به همین دلیل بدون اینکه بدونین کدوم فیلد Identity هست میشه نوشت:
select identitycol from orders

برای داشتن دو فیلد به حالت Auto Increment باید خودتون مقدارش رو در یک جدول ثبت کنین، وقتی لازم دارین بخونین، یکی بهش اضافه کنین و Update کنین

Masiha1986
دوشنبه 14 مرداد 1387, 23:46 عصر
با سلام
برای این کار بهترین راه اینه که از Trigger استفاده کنی.
فرض کنیم که ما جدولی داریم با فیلدهای ID (که Identity واقعی است)، OwnID (که ID اضافه شده توسط ماست) و ...
در نتیجه Trigger مورد نظر ما به این صورت میشه:




CREATE TRIGGER dbo.trSetOwnID
ON TestIdentity
FOR INSERT
AS
BEGIN
DECLARE @MaxOwnID int
SELECT @MaxOwnID = MAX(OwnID) + 1 FROM TestIdentity

IF @MaxOwnID IS NULL
BEGIN
SET @MaxOwnID = 1
END

DECLARE @MaxID int
SELECT @MaxID = MAX(ID) FROM TestIdentity

UPDATE TestIdentity
SET OwnID = @MaxOwnID
WHERE ID = @MaxID
END


برای آشنایی بیشتر با Trigger ها یک سر به لینک زیر بزنید:

http://www.developercenter.ir/Forum/showthread.php?t=9929

sarasara
سه شنبه 15 مرداد 1387, 07:27 صبح
از دوستان ممنونم،
پیاده سازی رو تو برنامه انجام دادم، به این صورت که یه متد نوشتم که بیشترین مقدار فیلد مورد نظر رو می گیره و یکی بهش اضافه می کنه.