PDA

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 استفاده میکنم