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

مشكلة فى Trigger عند عملية الحذف On Delete

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

اخواني سويت هالكود لنسخ بيانات من جدول الى جدول اخر عن طريق تريجر

لكنة يعمل عند عملية الاضافة Insert فقط وعندحذف السجل من الجدول الاول لا تحذف من الجدول الثاني

CREATE TRIGGER dbo.BACKUP_PRODUCTS
ON dbo.PRODUCTS
FOR  INSERT , UPDATE , DELETE
AS 
DECLARE @ProdID int,
@ProdName char(55)
SELECT @ProdID=ProdID,@ProdName=ProdName
FROM dbo.PRODUCTS 
INSERT INTO db2.dbo.PRODUCTS (ProdID,ProdName) 
VALUES (@ProdID,@ProdName)
DELETE FROM dbo.PRODUCTS
#2

من الافضل ان تقوم بكتابة 2 تريجر لتحديث البيانات فى كلتا قاعدتى البيانات

الكود الاول لتحديث عمليات الإدخال Insert

  1.  
  2. CREATE TRIGGER dbo.BackupInserted
  3. ON dbo.PRODUCTS
  4. FOR INSERT , UPDATE
  5. AS
  6.  
  7. DECLARE @ProdID int,
  8. @ProdName Nvarchar(50)
  9.  
  10. SELECT @ProdID=ProdID,@ProdName=ProdName
  11. FROM Inserted
  12.  
  13. INSERT INTO DB2.dbo.PRODUCTS (ProdID,ProdName)
  14. VALUES (@ProdID,@ProdName)
  15.  
  16. Go
  17.  
  18.  

و للتجربة قم بتنفيذ الكود التالى

  1.  
  2. INSERT INTO PRODUCTS (ProdID,ProdName)VALUES(1,'Product1')
  3. INSERT INTO PRODUCTS (ProdID,ProdName)VALUES(2,'Product2')
  4. INSERT INTO PRODUCTS (ProdID,ProdName)VALUES(3,'Product3')
  5. INSERT INTO PRODUCTS (ProdID,ProdName)VALUES(4,'Product4')
  6. INSERT INTO PRODUCTS (ProdID,ProdName)VALUES(5,'Product5')
  7. INSERT INTO PRODUCTS (ProdID,ProdName)VALUES(6,'Product6')
  8. INSERT INTO PRODUCTS (ProdID,ProdName)VALUES(7,'Product7')
  9. INSERT INTO PRODUCTS (ProdID,ProdName)VALUES(8,'Product8')
  10. INSERT INTO PRODUCTS (ProdID,ProdName)VALUES(9,'Product9')
  11. INSERT INTO PRODUCTS (ProdID,ProdName)VALUES(10,'Product10')
  12.  
  13.  

و لتحديث عمليات الحذف

  1.  
  2. CREATE TRIGGER dbo.BackupDeleted
  3. ON dbo.PRODUCTS
  4. FOR DELETE
  5. AS
  6.  
  7. DECLARE @ProdID int,
  8. @ProdName Nvarchar(50)
  9.  
  10. SELECT @ProdID=ProdID,@ProdName=ProdName
  11. FROM Deleted
  12.  
  13. DELETE FROM DB2.dbo.PRODUCTS WHERE ProdID=@ProdID
  14.  
  15.  
  16. Go
  17.  
  18.  

للتجربة قم بتنفيذ السطر

  1.  
  2. INSERT INTO PRODUCTS (ProdID,ProdName)VALUES(11,'Product11')
  3.  
  4.  

و من ثم نفذ السطر التالى

  1.  
  2. DELETE FROM PRODUCTS WHERE ProdID=11
  3.  

تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 14 أكتوبر 2009 في 19:09

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

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