سؤال

وأريد أن إنشاء مشغل للتحقق ما يجري حذف ضد قواعد العمل ومن ثم إلغاء الحذف إذا لزم الأمر. أي أفكار؟

والحل استخدام بدلا من الزناد حذف. توقف تران الاستعادة الحذف. كنت أخشى أن كنت أود أن يكون قضية سلسلة عندما فعلت حذف ولكن هذا لا يبدو أن يحدث. ربما الزناد لا يمكن أن تؤدي في حد ذاته.

هل كانت مفيدة؟

المحلول

استخدم لINSTEAD OF DELETE (انظر MSDN ) الزناد وتقرر في يؤدي ما تريد حقا القيام به.

نصائح أخرى

والحل استخدام بدلا من الزناد حذف. توقف تران الاستعادة الحذف. كنت أخشى أن كنت أود أن يكون قضية سلسلة عندما فعلت حذف ولكن هذا did'nt يبدو أن يحدث. ربما الزناد لا يمكن أن تؤدي في حد ذاته. على أية حال، وذلك بفضل جميع لمساعدتكم.

ALTER TRIGGER [dbo].[tr_ValidateDeleteForAssignedCalls]
on [dbo].[CAL]
   INSTEAD OF DELETE
AS 
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    DECLARE @RecType VARCHAR(1)
    DECLARE @UserID VARCHAR(8)
    DECLARE @CreateBy VARCHAR(8)
    DECLARE @RecID VARCHAR(20)

    SELECT @RecType =(SELECT RecType FROM DELETED)
    SELECT @UserID =(SELECT UserID FROM DELETED)
    SELECT @CreateBy =(SELECT CreateBy FROM DELETED)
    SELECT @RecID =(SELECT RecID FROM DELETED)

     -- Check to see if the type is a Call and the item was created by a different user
    IF @RECTYPE = 'C' and not (@USERID=@CREATEBY)

    BEGIN
        RAISERROR ('Cannot delete call.', 16, 1)
        ROLLBACK TRAN
        RETURN
    END

     -- Go ahead and do the update or some other business rules here
    ELSE
        Delete from CAL where RecID = @RecID    

END

وعلى الزناد يمكن استرجاع المعاملة الحالية، والتي سيكون لها تأثير إلغاء الحذف. كما ينص الملصق فوق أيضا، يمكنك أيضا استخدام بدلا من الزناد.

ووفقا لتوثيق MSDN حول INSTEAD OF DELETE مشغلات:

<اقتباس فقرة>   

وارسلت الجدول المحذوفة لDELETE   يحتوي على الزناد صورة من الصفوف   كما كانت قبل DELETE   وصدر بيان.

إذا فهمت بشكل صحيح DELETE يجري بالفعل تنفيذها. ما أنا في عداد المفقودين؟

وعلى أي حال، أنا لا أفهم لماذا تريد حذف السجلات، وإذا لم يتم تمرير قواعد العمل ثم الحذف تلك السجلات. وأود أن أقسم أنه ينبغي أن يكون من الأسهل لاختبار إذا كنت تمر قواعد العمل قبل حذف السجلات.

وكنت قد قال استخدام الصفقة، لم أسمع من قبل عن المشغلات INSTEAD OF.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top