الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف يمكننى الحصول على البيانات من الجدول قبل تعديلها عن طريق Trigger ؟

بدأه red_scorpion1 في 6 أكتوبر 2013 · 5 رد · 693 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع
السلام عليكم

 

أستخدم هذا Trigger لتسجيل البيانات بعد التحديث فى قاعدة SQL وهو يعمل بشكل سليم ولكن كيف يمكننى أن أحصل على البيانات قبل التعديل لتسجيلها أيضا (مثل الاسم القديم أو خلافه ..... ) ؟

 


CREATE TRIGGER trgAfterUpdate ON dbo.Employee_Demo

FOR UPDATE

AS

declare @empid int, @empname varchar(55), @empsal decimal(10,2), @audit_action varchar(100);

select @empid=i.Emp_ID from inserted i; 

select @empname=i.Emp_Name from inserted i;

select @empsal=i.Emp_Sal from inserted i; if update(Emp_Name)

 set @audit_action='Update Record --- After Update Trigger.';

if update (Emp_Sal)

 set @audit_action='Update Record --- After Update Trigger.';

insert intoEmployee_Demo_Audit(Emp_ID,Emp_Name,Emp_Sal,Audit_Action,Audit_Timestamp)

values (@empid,@empname,@empsal,@audit_action,getdate());

PRINT 'AFTER UPDATE trigger fired.'

تم تعديل هذه المشاركة بواسطة red_scorpion1 في 6 أكتوبر 2013 في 14:03

#2

مثال

ALTER Trigger [dbo].[UpdateTrigger]

on [dbo].[Employee]

after update
as

insert into  DBLOG (ModyBy,Date,Recored) values ('update processe',GetDate(),(Select empCode from deleted))

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#3
محمد فؤاد تركي كتب:

 

مثال

ALTER Trigger [dbo].[UpdateTrigger]

on [dbo].[Employee]

after update
as

insert into  DBLOG (ModyBy,Date,Recored) values ('update processe',GetDate(),(Select empCode from deleted))

 

مشكور أخى الفاضل محمد فؤاد تركي

 

ولكن من فضلك ما فائدة  deleted هنا أو بمعنى ادق لاحظت انه لا يعمل بدونها فما هى ؟

#4

3 - في حالة الحذف


 عندما نريد تصميم  Trigger على الحدث Delete فأنه عندما نقوم بحذف


السجل المراد حذفه على الجدول الذي تم عليهٌ الــ Trigger فإن ال sql engine يقوم بعمل جدول مؤقت نستطيع ان نتعامل معه داخل كود ال Trigger


فقط حيث أن هذا الجدول يحتوي على نفس حقول الجدول الذي تم علي ال Trigger و يسمي هذا الجدول Deleted وهو يحتوي على


النسخة من السجل الحال .


 


post-46243-0-94164700-1381069788_thumb.p


 


 


1

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#5

السلام عليكم ورحمة الله وبركاته

عند التعديل على قواعد البيانات واستخدام التريجر يتم تكوين جدولين فى الذاكرة أحدهما يسمى Deleted ويحتوى على البيانات القديمة (قبل التعديل)

والآخر يسمى Inserted ويحتوى على البيانات الجديدة التى تحاول إدخالها

لذلك عند الرغبة فى قراءة أى بيان قديم (قبل التعديل) يتم الاستعلام فى الجدول Deleted كأنه جدول عادى موجود فى قواعد البيانات ولكنه مؤقت حتى ينتهى التريجر

 

كذلك يفيد الجدول Inserted فى حالة استخدام التريجر بنظام Instead of عندما تريد اختبار أى قيمة من القيم الجديدة التى تريد إدخالها

 

أرجو أن يفيد هذا

6

أدعو الله أن يجعل أعمالنا خالصة لوجهه الكريم --- وأن ينفعنا بما علمنا

Dr Sayed Tohamy

Programming Instructor

مدرب برمجة

---------------

EmaSoft2000

-------------------

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…