PDA

View Full Version : بدست آوردن شماره سطر درج شده



Mohammad_MCE
یک شنبه 25 آبان 1393, 13:03 عصر
با سلام به دوستان وقتتون بخیر.من دو تا جدول دارم که فیلد ای دی اون ها به صورت Identity هستش (درج خودکار) وقتی از C# میخوام وقتی اطلاعات رو درج کردم اون آیدی که الان واسه این سطر ایجاد شد رو به دست بیارم؟:چشمک:

rasoolf
یک شنبه 25 آبان 1393, 13:51 عصر
SELECT LAST(column_name) FROM table_name;

ghossein
یک شنبه 25 آبان 1393, 14:02 عصر
سلام

به نظر من استفاده از نوع Identity برای تعیین آی دی منحصر به فرد برای رکورد جدید کار درستی نیست چون احتمال داره که آی دی جدید خیلی با آی دی قبلیش فاصله داشته باشه مثلا اگر آخرین رکوردی که وارد کردید مثلا شماره آی دی اون 100 باشه بعد می بینید که یه عدد عجیب غریب مثلا 130 رو می ده.

کلاً برای بدست آوردن یه شماره Id منحصر به فرد می تونید ، یه کلاس تعریف کنید و متدی جهت اینکار در نظر بگیرید.
که یه روشش اینه که شما یه ستون در جدول از نوع BigInt تعریف کنید بعد بیاید با استفاده از دستورات اس کیو ال ( Max ) بزرگترین مقدار این ستون را پیدا کنید و یک واحد به اون اضافه کنید و ذخیره کنید .
خوب در اینجا هم شما Id رو دارید و هم Id منحصر به فرد رو ایجاد کردید.



public string GenerateIDFactor()
{

if (DSFactor.Tables["TPropertiesFactor"].Rows.Count == 0)
{
return "1";
}
else
{
return (Int64.Parse(DSFactor.Tables["TPropertiesFactor"].Rows[0]["Max"].ToString()) + 1).ToString();
}


}

Jean Reno
یک شنبه 25 آبان 1393, 15:23 عصر
DECLARE @RowCounter INT
SET @RowCounter =SELECT COUNT(id)+1 FROM dbo.myTable

-- شماره ردیف آخرین رکورد
PRINT @RowCounter

sajadsobh
یک شنبه 25 آبان 1393, 15:24 عصر
سلام

به نظر من استفاده از نوع Identity برای تعیین آی دی منحصر به فرد برای رکورد جدید کار درستی نیست چون احتمال داره که آی دی جدید خیلی با آی دی قبلیش فاصله داشته باشه مثلا اگر آخرین رکوردی که وارد کردید مثلا شماره آی دی اون 100 باشه بعد می بینید که یه عدد عجیب غریب مثلا 130 رو می ده.

کلاً برای بدست آوردن یه شماره Id منحصر به فرد می تونید ، یه کلاس تعریف کنید و متدی جهت اینکار در نظر بگیرید.
که یه روشش اینه که شما یه ستون در جدول از نوع BigInt تعریف کنید بعد بیاید با استفاده از دستورات اس کیو ال ( Max ) بزرگترین مقدار این ستون را پیدا کنید و یک واحد به اون اضافه کنید و ذخیره کنید .
خوب در اینجا هم شما Id رو دارید و هم Id منحصر به فرد رو ایجاد کردید.



public string GenerateIDFactor()
{

if (DSFactor.Tables["TPropertiesFactor"].Rows.Count == 0)
{
return "1";
}
else
{
return (Int64.Parse(DSFactor.Tables["TPropertiesFactor"].Rows[0]["Max"].ToString()) + 1).ToString();
}


}

یه سوال؟ یعنی بجای تعریف یک فیلد که کلید اصلی باشه و خاصیت identity اش رو yes کنیم بیایم یه فیلد با خصوصیاتی که شما گفتید ایجاد کنیم؟

Jean Reno
یک شنبه 25 آبان 1393, 15:42 عصر
INSERT dbo.ProjectManagement_ProcessType
( ProcessTypeTitle, Description )
VALUES ( @ProcessTypeTitle, @Description )

DECLARE @RowCounter INT
SET @RowCounter = ( SELECT TOP 1
RowNum
FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY [ProcessTypeID] ASC ) AS [RowNum]
FROM [dbo].ProjectManagement_ProcessType
) AS AllRecords
ORDER BY AllRecords.RowNum DESC
)

-- شماره ردیف آخرین رکورد
PRINT @RowCounter

danialafshari
یک شنبه 25 آبان 1393, 16:45 عصر
با سلام
تاپیک قبلی رو هم با همین محتوا به عنوان تکراری حذف کردم
دوستان قبل از جواب دادن جستجو کنن اگر تاپیکی نبود اقدام به جواب دادن کنن، تا از ازدیاد تاپیک های همسان جلوگیری بشه
این بحث مربوط میشه به SCOPE_IDENTITY یا Max(ID) که بارها سوالش مطرح شده و جواب داده شده
در اینجا هم یک سورس قبلاً قرار دادم
http://barnamenevis.org/showthread.php?464082-%DA%A9%D9%85%DA%A9-%D8%AF%D8%B1-%D8%A8%D8%AF%D8%B3%D8%AA-%D8%A2%D9%88%D8%B1%D8%AF%D9%86-%D8%B4%D9%85%D8%A7%D8%B1%D9%87-%D9%81%D8%A7%DA%A9%D8%AA%D9%88%D8%B1&p=2078618#post2078618
موفق باشید