ข้อ จำกัด ต่างประเทศที่สำคัญถูกนำมาใช้กับทริกเกอร์ภายในพิเศษ FOR EACH ROW
ทั้งหมดของพวกเขาจะถูกเรียกใช้
โปรดทราบว่านี่คือรายละเอียดการใช้งานที่สามารถเปลี่ยนแปลงได้ดังนั้นอย่าพึ่งพา แต่พื้นฐานไม่ได้เปลี่ยนไปในสองสามเวอร์ชันหลักดังนั้นการเปลี่ยนแปลงครั้งใหญ่จึงไม่น่าเป็นไปได้
ฉันวิ่งทดสอบอย่างรวดเร็วด้วยง่าย จำกัด FK จากไปtbl
tbltype
ใช้ FK อย่างง่ายพร้อมกับทริกเกอร์ภายในสี่ตัวFOR EACH ROW
ในการทดสอบของฉันในหน้า 9.4
ต่อไปนี้เป็นบทสรุปอย่างรวดเร็วเกี่ยวกับวิธีตรวจสอบ:
SELECT oid -- 74791
FROM pg_constraint
WHERE conrelid = 'tbl'::regclass
AND contype = 'f';
SELECT objid, classid::regclass -- 74792,74793,74794,74795 / 'pg_trigger'
FROM pg_depend
WHERE refobjid = 74791
AND deptype = 'i'
SELECT tgrelid::regclass, tgname, tgfoid, tgtype FROM pg_trigger
WHERE oid IN (74792,74793,74794,74795) ORDER BY tgfoid;
'tbl' ;'RI_ConstraintTrigger_c_74794';1644;5
'tbl' ;'RI_ConstraintTrigger_c_74795';1645;17
'tbltype';'RI_ConstraintTrigger_a_74792';1654;9
'tbltype';'RI_ConstraintTrigger_a_74793';1655;17
SELECT oid, proname FROM pg_proc
WHERE oid IN (1654,1655,1644,1645);
1644;'RI_FKey_check_ins'
1645;'RI_FKey_check_upd'
1654;'RI_FKey_noaction_del'
1655;'RI_FKey_noaction_upd'
"noaction" ภายในสองชุดtbltype
ทำงาน
ทริกเกอร์ "check" ภายในสองอันtbl
ทำงาน
ทั้งหมดของพวกเขาจะดำเนินการตามที่ระบุโดยเลขคี่ในFOR EACH ROW
tgtype
2 ไบต์ของ Postgres tgtype smallint
เป็นตัวแทนint16
ในรหัสที่มา C TRIGGER_TYPE_ROW
ที่น้อยถอดรหัสบิตอย่างมีนัยสำคัญ คำอธิบายโดยละเอียดที่นี่:
คุณสามารถทดสอบสิ่งนี้ได้อย่างง่ายดายด้วยทริกเกอร์ที่เหมือนกันซึ่งคุณเปลี่ยนFOR ROW
/ STATEMENT
...