سلام مجدد
- دستور UpDate : بااستفاده از دستور UPDate رکوردهای اشاره شده تغییر خواهند کرد و در شکل کلی ذیل مورد استفاده قرار می گیرد.
] Set نام مستعار [ AS ] [ نام جدول UpDate
, مقدار 1 = فیلد 1
, مقدار 2 = فیلد 2
] عبارت شرطی [ Where
دراین حالت هر فیلد با مقدار تعیین شده که بانوع فیلد تناسب دارد جانشین خواهد شد و این عملیات تا زمانیکه شرط صادق باشد ادامه می یابد. بدیهی است که درصورت عدم ارائه شرط کلیه رکوردهای جدول تحت تاثیر تغییرات واقع خواهند شد که شایسته است دقت بیشتری بعمل آید در واقع در مواقعی که قرار است یک رکورد خاص تحت تغییرات قرار گیرد فیلد PK در جدول موردنظر بهترین کاندیدا جهت عبارت شرطی است.
مثال : بااستفاده از دستور UpDate مقدار اطلاعات پرسنلی شخص با شماره کارمندی 200 را تغییر دهید.
UpDate Person Set
´ ,رضائی پورPFamily = ´
UnitID = 1
Where PrsID = 200
که در این مثال ستونهای نام خانوادگی و واحد سازمانی تحت تغییرات برای شخص به کارمندی 200 قرار گرفته اند.
مثال : بااستفاده از دستور UpDate حقوق کارکنان را %20 افزایش دهید.
اگر فرض کنیم در جدول پرسنلی فیلد Price حقوق کارمندان باشد بنابراین خواهیم داشت:
UpDate Person Set
Price = Convert ( BigInt , Price * 1.2 )
مثال : فرض کنید که کد تهران = 1 و کد اصفهان = 2 باشد دستوری بنویسیدکه حقوق کارکنان دو شهر را %25 افزایش دهد:
UpDate Person Set Price = Convert (BigInt , Price* 1.25 )
Where CityID In (1,2)
مثال : دستوری بنویسید که حقوق کارکنان هر واحد را به نسبت درصد جمعیت هر شهر تغییر دهد.
UpDate Person P Set Price = Price * ( 1 +
( Select Isnull (C.PoPulate ,0) Form Unit U
Left Join City C On (C.CityID = U.CityID)
Where U.UnitID = P.UnitID)
( Select Sum (PoPulate ) From City ) )
همانطور که مشاهده می گردد ابتدا برای هر شخصی به واحد سازمانی و از آنجا به شهری که آن واحد قرار دارد ارجاع داده می شد تا جمعیت آن شهر تعیین گردد و در مخرج کسر نیز جمعیت کل شهرستانها محاسبه می گردد در واقع فرمول ذیل مورد محاسبه قرار گرفته است:
( + 1 ) * حقوق قبلی = حقوق جدید
از طرفی مشاهده می گردد که مخرج کسر یعنی جمعیت کل شهرستانها برای هر فرد در حال محاسبه است که فرآیند به روزرسانی را کندتر خواهد کرد بدین منظور اگر از یک SP استفاده شود می توان افزایش سرعت را ایجاد نمود بنابراین خواهیم داشت:
Create Proc NewPrice AS
Declare @SumPoP BigInt
Set @SumPoP = ( Select Sum (PoPulate ) From City )
Begin Tran
UpDate Person P Set Price = Price * ( 1 +
( Select Isnull (C.PoPulate , 0 ) From Unit U
Left Join City C On ( C.CityID = U.CityID)
Where U.UnitID = P.UnitID ) / @ SumPoP )
Commit Tran
خب تا اینجا امیدوارم که سخت نبوده باشه.
در پست بعد دستور Delete رو خواهم گفت. همچنان با ما باشید