PDA

View Full Version : تریگر جهت تغییرات یک فیلد



IMANAZADI
پنج شنبه 21 فروردین 1393, 15:02 عصر
با سلام
یک جدول داریم شامل فیلد های lineNo , Size, Remark

میخوام یک تریگر بنویسم که وقتی یک lineNo در فیلد Remark گزینه void نوشته شده کل lineNo متناظر اون رو پیدا کنه و در توضیحاتش void درج بشه

ممنون میشم


مثال :

LineNo--Size--Remark
aa-02--null
aa-02-null
aa-02-null
bb-05-null
bb-05-null

میخوام زمانی که هر کدوم از لاین نامبر aa-02 در قسمت ریمارکش نوشته شد void , بیاد کل لاین نامبر های aa-02 رو پیدا کنه و در ریمارکش void رو درج کنه
آیا این کار شدنی هست ؟؟؟

مهرداد صفا
جمعه 22 فروردین 1393, 19:47 عصر
سلام.
CREATE TRIGGER Trigger1
ON dbo.table1
FOR INSERT
AS
begin
declare cursor1 cursor
for
select * from inserted where remark ='void'
open cursor1;

declare @lineNo nvarchar(10),@size int,@remark nvarchar(10);
fetch cursor1 into @lineno,@size,@remark;

while (@@fetch_status=0)
begin
update table1
set remark=@remark where [LineNo]=@lineNo and size =@size;
fetch cursor1 into @lineNo,@size,@remark;
end






close cursor1;
deallocate cursor1;

end

Reza_Yarahmadi
شنبه 23 فروردین 1393, 12:52 عصر
بجای کرسر میشه از دستور زیر هم استفاده کرد
Update YourTable
Set
Remark = 'void'
From
YourTable Y2 INNER JOIN Inserted I
ON
I.Remark = 'void'
AND
Y2.LineNo = I.LineNo
در اینطور مواقع استفاده از تریگر پیشنهاد نمیشه. در SPایی که جدول مورد نظرتون رو تغییر میده در صورتی که فیلد Remark برابر مقدار مورد نظرتون بود عملیات آپدیت رو انجام بدید
تریگر سربار زیادی روی سرور داره و (بسته به نوع تریگر) به ازا هر درجی این تریگر ران میشه چه نیاز به تغییرات باشه چه نباشه.