PDA

View Full Version : درج همزمان در یک جدول،آپدیت مقدار ستونی در جدول دیگر



gelayor14
سه شنبه 25 شهریور 1393, 12:39 عصر
سلام
آیا امکانش هست همزمان با درج در جدولی بشه یه مقدار رو در جدول دیگر آپدیت کرد؟(بین این جدول کلید خارجی وجود دارد)
اگر این امکان نیست
چجوری میشه جدا این دو تا دستور رو نوشت که هر دو انجام بشن؟

mohammad reza beizavi
سه شنبه 25 شهریور 1393, 13:43 عصر
درود بر شما
سواتون مبهمه واضحتر بپرسید تا بشه راهنمایی کرد.

gelayor14
سه شنبه 25 شهریور 1393, 15:18 عصر
تو سیستم کتابخونه
بخش امانت :اکد پرسنلی،کد کتاب،کد اسناد متفرقه ،تاریخ امانت و...
کتاب:عنوان کتاب، کد کتاب،نویسنده و تعداد(موجود بودن یا در امانت بودنش رونشون میده)
میخوام وقتی کتابی به امانت میره ضمن درج اطلاعات در جدول امانت بره تو جدول کتاب تعدادموجود از این کتاب رو که پیش فرض رو یک هست این رو آپدیت کنه بکنه صفر
که بعدا خواستم گزارش بگیرم که چه اسنادی در امانت هست از روی همین فیلد تعداد =0 بفهمم که سند موجود نیست یا اگر =1 بود بفهمم سند موجود هست

mohammad reza beizavi
سه شنبه 25 شهریور 1393, 15:27 عصر
برای اینکار حداقل دو راه به نظرم میرسه:
1: توی stored procedure بنویسید که درج اطلاعات در جدول امانات رو انجام بده که مسلما کد یا Id کتاب رو هم بهش میفرستید. حالا بلافاصله بعد از اینکار یه کوئری update هم برای جدول کتاب بنویسید که تعداد موجود قبلی رو یک واحد کم کنه.
البته برای اینکه کارتون درست تر انجام بشه می تونید این دو کوئری رو درون Transaction بذارید تا اگه یکی از اونها انجام نشد کل کار رو به حالت اول برگردونه.
2: می تونید یه triger روی Insert جدول امانت بنویسید که به محض insert شدن یک رو کاری رو برای شما انجام بده و اون اینکه یک واحد از تعداد موجود کتابی با کد مورد نظر کم کنه.

gelayor14
سه شنبه 25 شهریور 1393, 15:42 عصر
برای اینکار حداقل دو راه به نظرم میرسه:
1: توی stored procedure بنویسید که درج اطلاعات در جدول امانات رو انجام بده که مسلما کد یا Id کتاب رو هم بهش میفرستید. حالا بلافاصله بعد از اینکار یه کوئری update هم برای جدول کتاب بنویسید که تعداد موجود قبلی رو یک واحد کم کنه.
البته برای اینکه کارتون درست تر انجام بشه می تونید این دو کوئری رو درون Transaction بذارید تا اگه یکی از اونها انجام نشد کل کار رو به حالت اول برگردونه.
2: می تونید یه triger روی Insert جدول امانت بنویسید که به محض insert شدن یک رو کاری رو برای شما انجام بده و اون اینکه یک واحد از تعداد موجود کتابی با کد مورد نظر کم کنه.
متشکرم روش 2و3 رو خیلی آشنا نیستم اما تو روش اول
من کد درجم رو با sp نوشتم ، الان باید یه sp هم برای آپدیت بنویسم؟اگه منظورتون رو درست متوجه شده باشم باید جدا باشند یعنی هر دو دستور نمیشه با همه تو یه sp
نوشته بشن؟
بعد یه سوال دیگه دو تا جدول رو join کنم؟
اگر اینطوره اول یه بار درج انجام بشه کانکشن بسته بشه دوباره یه آپدیت دیگه بنویسم و انجام بدم درسته؟