2013-02-09 24 views
5

यदि मेरे पास कैनिन टेबल पर पहले से अपडेट ट्रिगर है जो अब(), और डीओजीएस को कैनिन से प्राप्त करता है, जब एक डीओजीएस पंक्ति अपडेट होती है, तो क्या कैनिन अपडेट-ट्रिगर आग लगती है? मेरी परीक्षणों में ऐसा नहीं होता है, तो मुझे लगता है इस सवाल का जवाब नहीं है, लेकिन शायद मैं चीजों को सही ढंग से नहीं किया है: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 
+0

यह उन कुछ क्षेत्रों में से एक है जहां टेबल विरासत आप अपेक्षा से कम स्पष्ट है। ट्रिगर्स और विदेशी कुंजी बाधाएं विभाजित टेबल दोनों के साथ समस्याग्रस्त हैं; उन्हें काम करने के लिए वास्तविक विभाजन संरचना को "समझने" के लिए कोड की आवश्यकता होती है। आप उन्हें उच्च स्तर की तालिका के लिए वास्तव में सामान्य रूप से नहीं लिख सकते हैं और उन्हें स्वचालित रूप से उप-तालिकाओं के लिए काम करते हैं। –

+0

@ क्रेग रिंगर: हाँ। सीमाओं पर एक "चेतावनी" अनुभाग था। इसमें मेटा-कैविट होना चाहिए: यह चेतावनी अनुभाग अपूर्ण है :-) – Tim

उत्तर

7

लंबी कहानी छोटी - नहीं, यह विरासत में मिला नहीं है। CREATE TABLE - LIKE ... INCLUDING ... का विकल्प है, लेकिन यह ट्रिगर्स का प्रचार भी नहीं करता है।

संबंधित मुद्दे