यदि मेरे पास कैनिन टेबल पर पहले से अपडेट ट्रिगर है जो अब(), और डीओजीएस को कैनिन से प्राप्त करता है, जब एक डीओजीएस पंक्ति अपडेट होती है, तो क्या कैनिन अपडेट-ट्रिगर आग लगती है? मेरी परीक्षणों में ऐसा नहीं होता है, तो मुझे लगता है इस सवाल का जवाब नहीं है, लेकिन शायद मैं चीजों को सही ढंग से नहीं किया है:PostgreSQL विरासत: विरासत-तालिका ट्रिगर्स विरासत में हैं?
create table canines
(
lastupdate timestamp with time zone default now()
);
CREATE OR REPLACE FUNCTION stamp_lastupdate_column()
RETURNS TRIGGER AS $$
BEGIN
NEW.lastupdate = now();
RETURN NEW;
END;
$$ language 'plpgsql';
CREATE TRIGGER TRG_CANINES_BU BEFORE UPDATE
on CANINES FOR EACH ROW EXECUTE PROCEDURE
stamp_lastupdate_column();
create table dogs
(id int primary key,
breed varchar(25)
) inherits (CANINES);
insert into dogs(id, breed) values(1, 'sheltie');
select * from dogs;
--"2013-02-09 06:49:31.669-05" , 1 , sheltie
update dogs set breed = 'Sheltie/Shetland Sheepdog' where id = 1;
select * from dogs;
--"2013-02-09 06:49:31.669-05" , 1 , Sheltie/Shetland Sheepdog
यह उन कुछ क्षेत्रों में से एक है जहां टेबल विरासत आप अपेक्षा से कम स्पष्ट है। ट्रिगर्स और विदेशी कुंजी बाधाएं विभाजित टेबल दोनों के साथ समस्याग्रस्त हैं; उन्हें काम करने के लिए वास्तविक विभाजन संरचना को "समझने" के लिए कोड की आवश्यकता होती है। आप उन्हें उच्च स्तर की तालिका के लिए वास्तव में सामान्य रूप से नहीं लिख सकते हैं और उन्हें स्वचालित रूप से उप-तालिकाओं के लिए काम करते हैं। –
@ क्रेग रिंगर: हाँ। सीमाओं पर एक "चेतावनी" अनुभाग था। इसमें मेटा-कैविट होना चाहिए: यह चेतावनी अनुभाग अपूर्ण है :-) – Tim