| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 39. PL/Perl - Perl ¼ö¼Ó ¾ð¾î | Fast Forward | Next |
PL/Perl¸¦ »ç¿ëÇØ Æ®¸®°Å ÇÔ¼ö¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. Æ®¸®°Å ÇÔ¼ö¿¡¼´Â, $_TD¶ó´Â ÇØ½Ã¿¡ÀÇ ÂüÁ¶¿¡, ÇöÀçÀÇ Æ®¸®°Å À̺¥Æ®¿¡ °üÇÑ Á¤º¸°¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù. $_TD´Â ±¤¿ª º¯¼öÀ̸ç, °¢ Æ®¸®°Å È£Ãâ¿¡ ´ëÇØ¼ ±¹¼ÒÀûÀÎ °ªÀ» µû·Î µû·Î ²¨³À´Ï´Ù. ÀÌÇÏ¿¡ $_TD¶ó´Â ÇØ½Ã¿¡ÀÇ ÂüÁ¶ÀÇ Çʵ带 ³ªÅ¸³À´Ï´Ù.
NEWÀÇ foo·Ä°ª.
OLDÀÇ foo·Ä°ª.
ºÒ·Á °£ Æ®¸®°ÅÀÇ À̸§.
Æ®¸®°Å À̺¥Æ®. INSERT,UPDATE,DELETE, ȤÀºUNKNOWN.
Æ®¸®°Å°¡ ¾ðÁ¦ ºÒ·Á °¬´ÂÁö. BEFORE ,AFTER, ȤÀº UNKNOWN.
Æ®¸®°Å ·¹º§. ROW, STATEMENT, ȤÀº UNKNOWN.
Æ®¸®°ÅÀÇ ¹ßÇà¿ø Å×À̺íÀÇ OID.
Æ®¸®°ÅÀÇ ¹ßÇà¿ø Å×À̺íÀÇ À̸§.
Æ®¸®°ÅÀÇ ¹ßÇà¿ø Å×À̺íÀÇ À̸§. À̰ÍÀº ÆóÁö ¿¹Á¤À¸·Î, ÇâÈÄ ¸±¸®½º¿¡¼ »èÁ¦µÉ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. ´ë½Å¿¡ $_TD->{table_name}¸¦ »ç¿ëÇØ ÁÖ¼¼¿ä.
Æ®¸®°ÅÀÇ ¹ßÇà¿ø Å×À̺íÀÌ Á¸ÀçÇÏ´Â ½ºÅ°¸¶ÀÇ À̸§.
Æ®¸®°Å ÇÔ¼öÀÇ ÀÎÀÚÀÇ ¼ö.
Æ®¸®°Å ÇÔ¼öÀÇ ÀÎÀÚ. $_TD->{argc}°¡ 0ÀÇ °æ¿ì´Â Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.
Æ®¸®°Å´Â ÀÌÇÏÀÇ ¾î´ÀÂÊÀ̵çÀ» µ¹·ÁÁÙ ¼ö°¡ ÀÖ½À´Ï´Ù.
¹®ÀåÀ» ½ÇÇàÇÕ´Ï´Ù.
¹®ÀåÀ» ½ÇÇàÇÏÁö ¾Ê½À´Ï´Ù.
Æ®¸®°Å ÇÔ¼ö¿¡ ÀÇÇØ NEWÇàÀÌ º¯°æµÈ °ÍÀ» ³ªÅ¸³À´Ï´Ù.
ÀÌÇÏ´Â Æ®¸®°Å ÇÔ¼öÀÇ ¿¹·Î, ¿©±â±îÁö´Â ¼³¸íÀÇ ÀϺθ¦ ¿¹Áõ ÇÏ´Â °ÍÀÔ´Ï´Ù.
CREATE TABLE test (
i int,
v varchar
);
CREATE OR REPLACE FUNCTION valid_id() RETURNS trigger AS $$
if (($_TD->{new}{i} >= 100) || ($_TD->{new}{i} <= 0)) {
return "SKIP"; # INSERT/UPDATE ¸í·ÉÀ» Ãë¼ÒÇÕ´Ï´Ù.
} elsif ($_TD->{new}{v} ne "immortal") {
$_TD->{new}{v} .= "(modified by trigger)";
return "MODIFY"; # ÇàÀ» º¯°æÇØ, INSERT/UPDATE ¸í·ÉÀ» ½ÇÇàÇÕ´Ï´Ù.
} else {
return; # INSERT/UPDATE ¸í·ÉÀ» ½ÇÇàÇÕ´Ï´Ù.
}
$$ LANGUAGE plperl;
CREATE TRIGGER test_valid_id_trig
BEFORE INSERT OR UPDATE ON test
FOR EACH ROW EXECUTE PROCEDURE valid_id();