PostgreSQL এ সারি আপডেট হওয়ার পরে টাইমস্ট্যাম্প আপডেট করুন


87

মাইএসকিউএলে, আমরা এটি কার্যকর করতে পারি যেখানে এটি changetimestampপ্রতিবার সারি পরিবর্তন হওয়ার সাথে কলামটি আপডেট করে:

create table ab (
  id int, 
  changetimestamp timestamp 
    NOT NULL 
    default CURRENT_TIMESTAMP 
    on update CURRENT_TIMESTAMP 
);

পোস্টগ্রাইএসকিউএল-তে কি অনুরূপ কিছু আছে?


আফিক পোস্টগ্র্রেএসকিউএল তেমন সহজ নয় যেখানে আপনার একটি ট্রিগার দরকার: pointbeing.net/weblog/2008/03/…
যান্ত্রিক_মেট

4
এটি লক্ষণীয় যে মাইএসকিউএল timestampসংস্করণ এবং সেটিংসের উপর নির্ভর করে কলামগুলির জন্য অনেকগুলি "বিশেষ চিকিত্সা" রয়েছে, যা (ভাগ্যক্রমে!) পোস্টগ্র্রেসে পুনরুত্পাদন করা যায় না। 0কোনও timestampকলামের জন্য অনুমতি দেওয়া বা NULLনির্দিষ্ট নক্ষত্রের ইনপুটটিতে বর্তমান টাইমস্ট্যাম্পে রূপান্তর করা। সূক্ষ্ম পার্থক্য সম্পর্কে সচেতন হতে উভয় আরডিবিএমএসের ম্যানুয়াল অধ্যয়ন করতে ভুলবেন না: মাইএসকিউএল এবং পোস্টগ্রিস
এরউইন ব্র্যান্ডসটেটার

4
@ এরউইন ব্র্যান্ডসটেটারটি কি নীচে দেওয়া উত্তরটি এখনও 2018 এর স্বনির্বাচিত টাইমস্ট্যাম্পগুলির জন্য সেরা অনুশীলন?
কমনসেন্সকোড

উত্তর:


127

এমন কোনও ফাংশন তৈরি করুন যা সারণীর চেঞ্জটাইম স্ট্যাম্প কলামকে আপডেট করে:

CREATE OR REPLACE FUNCTION update_changetimestamp_column()
RETURNS TRIGGER AS $$
BEGIN
   NEW.changetimestamp = now(); 
   RETURN NEW;
END;
$$ language 'plpgsql';

টেবিলে একটি ট্রিগার তৈরি করুন যা আপডেট_চেঞ্জটাইমস্ট্যাম্প_ক্লোনম () ফাংশনটিকে কল করে যখনই কোনও আপডেট এরকম ঘটে:

    CREATE TRIGGER update_ab_changetimestamp BEFORE UPDATE
    ON ab FOR EACH ROW EXECUTE PROCEDURE 
    update_changetimestamp_column();

4
সুতরাং, আমি যা চাই তা করার উপায় ছাড়া আর কোনও উপায় নেই? কারণ আমি আমার সমস্ত টেবিলগুলি সম্ভবত 300+ এর জন্য 'আপডেট টাইমস্ট্যাম্প' প্রয়োগ করতে চাই। এবং আমি ভাবছি যে ট্রিগার তৈরি করা কিছু কার্যকারিতা সমস্যার কারণ হতে পারে।
bichonfrise74

4
যতদূর আমি জানি এটি পোস্টগ্র্যাস্কল এ করার মানক উপায়। আপনি যখন মাইএসকিএলে "আপডেট কারেন্টটাইমটাইম স্ট্যাম্প" লিখবেন, তখন এটি পটভূমিতে টেবিলে একটি ট্রিগার তৈরি করে। পার্থক্যটি হ'ল আপনি এখানে ট্রিগারটি আপনার জন্য লিখে রাখার পরিবর্তে ম্যানুয়ালি লিখেছেন।
চার্লস মা

4
কার্যত কোনও পারফরম্যান্স পেনাল্টি নেই - অন্তত কোনও বুদ্ধিমান ডাটাবেসে।

4
ফাংশনে প্যারামিটার হিসাবে আপডেট করার প্রয়োজনীয় কলামের নাম দেওয়ার কোনও উপায় আছে কি update_changetimestamp_column?
আন্তোয়ান মিলকভ

7
@ ওম্বল এটির একটি উদাহরণ পোস্ট করা সম্ভবত খুব দরকারী। যদি আমি পরিচালনা করি যে কীভাবে কলামটি আপডেট করতে হবে তা গতিময়ভাবে নির্দিষ্ট করতে হবে, তবে আমি এটি উত্তর হিসাবে লিখব।
মিররফেট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.