PDA

View Full Version : استفاده از Scope_Identity برای بدست آوردن MAX فیلد کلید چند جدول



ozzy_mra
چهارشنبه 28 دی 1390, 14:00 عصر
سلام
اگر عنوان سوالم گنگه عذر می خوام .من یه جدول دارم که تغییرات n تا جدول دیگه رو Log میکنه قراره در واقع یه جدول مشترک بین چند تا جدول هست وقتی قراره رکوردی در این جدول اینزرت بشه مقدار MAX کلید اصلی هر کدوم از جدول های دیگه بدست می آرم و به بزرگترین مقدار بدست اومده یکی اضافه میکنم و به عنوان کلید اصلی در جدولم اینزرت می کنم
می خواستم بدونم با کمک scope_Identity می تونم این کار رو برای هر تیبل انجام بدم و چطور؟
یعنی می خوام این مقدار Scope_Identity رو برای n تا جدول بست بیارم و هر کدوم رو تو یه متغییر بریزم
ممنون

baktash.n81@gmail.com
چهارشنبه 28 دی 1390, 14:37 عصر
سلام

به نظر یکم اشتباه می آد .. اگه کلید جدول اول امروز به عدد 100 برسه و فردا جدول دوم به عدد 100 برسه چه اتفاقی می افته ؟؟

یکی از روش ها برای اینکار ... نگهداری اطلاعات جدول در یک فیلد جداست ... مثلا اگه اطلاعاتی مربوط به تغییرات جدول t1 رو بخوام نگهدارم ... t1 و رکورد ID و تغییرات رو در 3 تا ستون نگه می دارم ...

خوب برای اینکه Id رکوردی رو که Insert شده بدست بیارم می تونم از Scope_identity استفاده کنم ... به شرطی که تو همون بلوک کد باشم ...

micro24
پنج شنبه 29 دی 1390, 18:58 عصر
با سلام

امیدوارم سوالتان را درست متوجه شده باشم یک تریگر روی جدولی که دارید همه اطلاعات جدول را Insert می نمائید بنویسید که بعد از insert شدن در آن جدول و max ای که می خواهید از جداول دیگر را بدست آورد.

ozzy_mra
دوشنبه 03 بهمن 1390, 08:04 صبح
سلام
ممنون از راهنماییتون ولی من می خوام قبل از اینزرت مقدار max کلید اصلی رو بدست بیارم خودم فکر کردم که یه تیبل داشته باشم که مقادیر ماکزیموم کلید هر تیبل رو ذخیره کنم و یه تریگر برای اینزرت بنویسم که هر بار این تیبل رو آپدیت کنه ولی می خوام بدونم با دستور SCOPE_IDENTITY قبل از اینزرت میشه بدست آورد مثلاً یه چیزی شبیه این
SELECT SCOPE_IDENTITY FROM table1