সারিটি সংশোধন করার পরে তারিখ ক্ষেত্র এবং সময় ক্ষেত্র আপডেট করে এমন ট্রিগার কীভাবে তৈরি করবেন?


10

আমি testtableডাটাবেসের ভিতরে একটি সারণী তৈরি testbaseকরেছি যার নিম্নলিখিত কাঠামো রয়েছে:

product_no (int, not null)
product_name (varchar(30), not null)
price (money, null)
expire_date (date, null)
expire_time (time(7), null)

যাইহোক, আমি কীভাবে এমন ট্রিগার লিখব যে এটি সেই নির্দিষ্ট সারিটি আপডেট করবে যা পরিবর্তন হয়েছে (বা নতুন তথ্য দিয়ে আপডেট হয়েছে) এবং expire_dateক্ষেত্রের মধ্যে পরিবর্তনের তারিখ এবং ক্ষেত্রের মধ্যে পরিবর্তনের সময়টি রেকর্ড করবে expire_time? (বা যদি এটি সম্ভব হয়?)


ট্রিগারটি কীভাবে তৈরি হয় তা কি আপনি দেখেছেন?

হ্যাঁ, আমি দেখেছি কীভাবে ট্রিগার তৈরি হয় ( রেফার : এমএসডিএন.মাইক্রোসফট.ইন- ইউস / লিবারি / ms189799 ( v=sql.105 ) .aspx ) তবে একটি জিনিস আমাকে বিরক্ত করছে যে কোনওটি কীভাবে আপডেট আপডেট করে? শর্তটি WHERE id = Changed_Row_ID
জ্যাক

উত্তর:


8

এটি মোটামুটি সহজ হবে তবে আমি আসলে কমান্ডের যুক্তিটি পরিবর্তন করার পরামর্শ দেব যা ডেটা সন্নিবেশ / আপডেট করছে যাতে এটি এই সময়ে অতিরিক্ত তথ্য যুক্ত করে।

তবে, আপনি যদি ট্রিগার নিয়ে এগিয়ে যেতে চান তবে আপনি এরকম কিছু করতে পারেন:

create trigger my_trigger
on my_table
after insert, update
as
begin
declare @dt datetime = getdate();
update a
set expire_date = CONVERT(DATE, @dt, 101),
    expire_time = CONVERT(TIME, @dt)
from my_table as a
join inserted as b 
on a.product_no = b.product_no; 
end
go  

এটি INSERTEDসারণীটি ব্যবহার করে product_noযে সারিগুলি পরিবর্তন / তৈরি করা হয়েছে তার সন্ধান করতে। আপনি নীচের লিঙ্কে ট্রিগার সম্পর্কে আরও জানতে পারেন:

http://msdn.microsoft.com/en-us/library/ms189799.aspx

এটি তোমাকে সাহায্য করবে বলে আশা করি।


আমি কখনই ভাবিনি যে এমএস এসকিউএল আসলে একটি সারণী গঠন করবে inserted। সুতরাং, তার মানে এটি যেমন নাম আছে আপনার নিজের ডাটাবেস সারণি না আছে নিরাপদ থাকবে না insertedএবং deleted?
জ্যাক

1
হ্যাঁ আমি কেবল বিভ্রান্তি এড়াতে এই নামের সাথে আপনার নিজস্ব টেবিল না রাখার পরামর্শ দিচ্ছি ;-)
মিঃ ব্রাউনস্টোন

ট্রিগার ম্যানুয়াল পৃষ্ঠা তৈরি উপর আপনি (সন্নিবেশিত / মোছা টেবিল ব্যবহার বর্ণনা নিম্নলিখিত পৃষ্ঠায় একটি লিঙ্ক খুঁজে পেতে পারেন msdn.microsoft.com/en-us/library/ms191300.aspx )
miracle173
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.