View Full Version : تعریف چند فیلد Identity
  
sarasara
دوشنبه 14 مرداد 1387, 16:02 عصر
سلام، من نیاز دارم توی tableام دوتا فیلد Identity داشته باشم اما ظاهرا SQL اجازه تعریف بیشتر از یکی رو نمی ده ....
کسی می دونه چیکار باید کرد؟
ASKaffash
دوشنبه 14 مرداد 1387, 16:49 عصر
سلام
هم در 2000 و هم در 2005 تست کردم نمی شود پس به دنبال روش دیگری باشید
موفق باشید.
AminSobati
دوشنبه 14 مرداد 1387, 23:10 عصر
بله هر جدول یک فیلد Identity میتونه داشته باشه. به همین دلیل بدون اینکه بدونین کدوم فیلد Identity هست میشه نوشت:
select identitycol from orders
برای داشتن دو فیلد به حالت Auto Increment باید خودتون مقدارش رو در یک جدول ثبت کنین، وقتی لازم دارین بخونین، یکی بهش اضافه کنین و Update کنین
Masiha1986
سه شنبه 15 مرداد 1387, 00: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, 08:27 صبح
از دوستان ممنونم،
پیاده سازی رو تو برنامه انجام دادم، به این صورت که یه متد نوشتم که بیشترین مقدار فیلد مورد نظر رو می گیره و یکی بهش اضافه می کنه.
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.