View Full Version : تریگر ساده بعد از آپدیت و حذف
ShahinRad97
دوشنبه 24 آذر 1393, 23:45 عصر
سلام.
من یه جدول دارم با ستون های زیر
id
name
hoghoogh
nomre
malek
sen
emtiaz
که نوع حقوق , سن عدد صحیح هستن و نوع نمره اعشاری و نوع مالک هم بیت هست.
حالا من تریگر میخوام که بعد از وارد کردن یا بروز کردن مقادیر فوق مقدار امتیاز رو از فرمول زیر محاسبه و در فیلد امتیاز درج کنه. اگه ممکنه راهنماییم کنید چجوری اینو بنویسم.
emtiaz=hoghoogh*0.5+nomre*2.25+sen+malek*3
ham3d1988
سه شنبه 25 آذر 1393, 07:45 صبح
سلام بهتره insert رو توی یه پراسیجر بنویسید و همونجا محاسبات رو انجام بدین یا از خصوصیت فیلدهای مشتق شده استفاده کنید
توی تعریف جدول هم می تونید نشون بدید :
CREATE TABLE MyTbl (
MyId int NOT NULL
, Qty smallint
, Price bigint
, InventoryValue AS Qty * Price
)
چون جدولتون وجود داره میتونید اینکارو بکنید:
ALTER TABLE dbo.MyTbl alter Column emtiaz AS (hoghoogh*0.5+nomre*2.25+sen+malek*3 * )
ولی تریگری که نیاز شماست :
CREATE TRIGGER TrgMyTbl_Insert
ON dbo.MyTbl
AFTER INSERT AS
BEGIN
UPDATE MyTbl
SET emtiaz=hoghoogh*0.5+nomre*2.25+sen+malek*3
where MyTbl.Id=Inserted.Id
END
ShahinRad97
چهارشنبه 26 آذر 1393, 20:05 عصر
ببخشی حالا اگه بخواییم بگیم اگه حقوق بیشتر از 5 بود حقوق رو 1 اگه بیشتر از 10 بود حقوق رو 2 و اگه بیشتر از 15 بود اونو 3 در نظر بگیره یعنی در واقع:
اگر hoghoogh<5 آنگاه حقوق=1
اگر hoghoogh<10 آنگاه حقوق=2
اگر hoghoogh<15 آنگاه حقوق=3
البته مقدار حقوق در جدول تغییر نکنه
و بعد فرمول زیر رو اجرا کنه چطور میشه؟
emtiaz=hoghoogh*0.5+nomre*2.25+sen+malek*3
ShahinRad97
چهارشنبه 26 آذر 1393, 20:18 عصر
آقا مشکل این تریگر چیه؟
createTRIGGER TrigerUpdateEmtiaz
ON dbo.tblMoteghazi
after update
AS
declare @temp numeric(6,3)
begin
select @temp=darsad_janbazi from updated
set @temp=@temp*2
update tblMoteghazi set darsad=@temp where tblMoteghazi.id=(select id from updated)
end
من دارم از sql express استفاده میکنم
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.