কেন ইনস্টলড অফ আপডেট আপডেট ট্রিগার সহ একটি টেবিলের বিপরীতে আপডেট একটি ক্লাস্টার ইনডেক্স সন্নিবেশ করানোর পাশাপাশি একটি ক্লাস্টারড ইনডেক্স আপডেট হিসাবে উপস্থিত হয়?


10

আমি খুব সাধারণ উদাহরণ দিয়ে শুরু করব: দুটি স্ক্রিন একই স্কিমাযুক্ত, উভয়ই পিকে ক্লাস্টারড, তবে যার একটিতে INSTEAD OF UPDATEট্রিগার রয়েছে:

CREATE TABLE Standard
(
    PK  UNIQUEIDENTIFIER PRIMARY KEY CLUSTERED,
    V   INT NOT NULL
)
GO

CREATE TABLE InsteadOf
(
    PK  UNIQUEIDENTIFIER PRIMARY KEY CLUSTERED,
    V   INT NOT NULL
)
GO

INSERT Standard (PK, V) VALUES ('1E58B555-B073-471E-B576-4B09C8E18976', 0)
INSERT InsteadOf (PK, V) VALUES ('1E58B555-B073-471E-B576-4B09C8E18976', 0)
GO

CREATE TRIGGER TR_InsteadOf_Update ON InsteadOf INSTEAD OF UPDATE
AS
BEGIN
    DECLARE @PK UNIQUEIDENTIFIER
    DECLARE @V INT
    DECLARE @cursor CURSOR
    SET @cursor = CURSOR FOR SELECT PK, V FROM Inserted
    OPEN @cursor

    FETCH NEXT FROM @cursor INTO @PK, @V
    WHILE @@FETCH_STATUS = 0
    BEGIN
        UPDATE InsteadOf SET
            V = @V
        WHERE PK = @PK

        FETCH NEXT FROM @cursor INTO @PK, @V
    END
    CLOSE @cursor
    DEALLOCATE @cursor

END
GO

যদি আমি স্ট্যান্ডার্ড টেবিলের বিপরীতে কোনও আপডেটের জন্য ক্যোয়ারী পরিকল্পনাটি দেখি, তবে আমি প্রত্যাশিত ক্লাস্টেড সূচক আপডেটটি পাই:

UPDATE Standard SET
    V = 1
    WHERE PK = '1E58B555-B073-471E-B576-4B09C8E18976'

এখানে চিত্র বর্ণনা লিখুন

তবে আমি যদি ট্রিগারটির সাথে টেবিলের বিপরীতে অনুরূপ আপডেট সম্পাদন করি তবে ক্লাস্টারড সূচক inোকানো হিসাবে উপস্থিত ক্লাস্টারড সূচক আপডেট হিসাবে আমি পেয়েছি:

UPDATE InsteadOf SET
    V = 1
    WHERE PK = '1E58B555-B073-471E-B576-4B09C8E18976'

এখানে চিত্র বর্ণনা লিখুন

কেন? আমি এই ক্যোয়ারী প্ল্যানে (ক্লোরি # 4) পরে প্রত্যাশিত ক্লাস্টারড ইনডেক্স আপডেটটি দেখতে পাচ্ছি, তবে কেন # 1 কোয়েরিতে আমি এই অতিরিক্ত সন্নিবেশ পাব?

উত্তর:


10

একটি INSTEAD OFট্রিগার সারিগুলির একটি অনুলিপি সঞ্চয় করে যা কোনও লুকানো কাজের টেবিলে * প্রভাবিত হবে। এটি আপনি দেখতে ক্লাস্টারড ইনডেক্স sertোকান। ট্রিগার বডি এই কাজের টেবিল * থেকে পড়ে এবং ট্রিগারটিতে থাকা কোনও ডেটা পরিবর্তন 'সাধারণ' অপারেটর (আপনার উদাহরণে ক্লাস্টারড ইনডেক্স আপডেট) ব্যবহার করে।


* এক্সিকিউশন পরিকল্পনার ব্যবহারকারী-দৃশ্যমান ফর্মটি তৈরি করার সময় ক্যোয়ারী প্রসেসর অভ্যন্তরীণভাবে কাজের টেবিলটির নাম পরিবর্তন করে। যখন এটি লিখিতভাবে, এটা লক্ষ্য বেস টেবিলে নতুন নামকরণ করা হয়, যখন পড়া, এটা নতুন নামকরণ করা হয় insertedবা deletedবেশী বা কম মানুষ একটি ট্রিগার দেখতে আশা করবে।

অধিক বিবরণের জন্য, আমার নিবন্ধটি দেখুন জবর জিনিস সম্পর্কে পরিবর্তে ট্রিগার

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.