CREATE TRIGGER
目录
CREATE TRIGGER
NAMESYNOPSIS
DESCRIPTION æè¿°
PARAMETERS åæ°
NOTES 注æ
EXAMPLES ä¾å
COMPATIBILITY å¼å®¹æ§
SEE ALSO åè§
è¯è
è·
NAME
CREATE TRIGGER - å®ä¹ä¸ä¸ªæ°ç触åå¨
SYNOPSIS
CREATE TRIGGER
name { BEFORE | AFTER } { event [ OR ... ] }
ON table [ FOR [ EACH ] { ROW | STATEMENT } ]
EXECUTE PROCEDURE funcname ( arguments )
DESCRIPTION æè¿°
CREATE TRIGGER å建ä¸ä¸ªæ°ç触åå¨ã 触åå¨å°ä¸æå®è¡¨å³èå¹¶ä¸å°å¨ç¹å®äºä»¶åçæ¶æ§è¡å£°æç彿° funcã
触åå¨å¯ä»¥å£°æä¸ºå¨å¯¹è®°å½è¿è¡æä½ä¹åï¼å¨æ£æ¥çº¦æä¹åå INSERTï¼UPDATE æ DELETE æ§è¡åï¼ææä½å®æä¹åï¼å¨æ£æ¥çº¦æä¹åå宿 INSERTï¼ UPDATE æ DELETE æä½ï¼è§¦åã å¦æè§¦åå¨å¨äºä»¶ä¹åï¼è§¦åå¨å¯è½ç¥è¿å½åè®°å½çæä½ææ¹å被æå¥çï¼å½åï¼è®°å½ï¼åªå¯¹ INSERT å UPDATE æä½ææï¼ã å¦æè§¦åå¨å¨äºä»¶ä¹åï¼æææ´æ¹ï¼åæ¬æåçæå¥ï¼ æ´æ°æå é¤å¯¹è§¦åå¨é½æ¯"å¯è§"çã
ä¸ä¸ª FOR EACH ROW æ§è¡æå®æä½ç触åå¨ä¸ºæä½ä¿®æ¹çæ¯ä¸è¡é½è°ç¨ä¸æ¬¡ãæ¯å¦ï¼ä¸ä¸ªå½±å 10 è¡ç DELETE å°å¯¼è´ä»»ä½å¨ç®æ å³ç³»ä¸ç ON DELETE 触åå¨ç¬ç«è°ç¨ 10 æ¬¡ï¼ æ¯ä¸ªè¢«å é¤çè¡ä¸æ¬¡ãç¸æ¯ä¹ä¸ï¼ä¸ä¸ªä¸ºæå®æä½ FOR EACH STATEMENT ç触åå¨åªæ¯ä¸ºä»»ä½æä½æ§è¡ä¸æ¬¡ï¼ä¸ç®¡æå¤å°è¡è¢«ä¿®æ¹ã ï¼ç¹å«æ¯ï¼ä¸ä¸ªä¿®æ¹é¶è¡çæä½ä»ç¶ä¼å¯¼è´ä»»ä½åéç FOR EACH STATEMENT 触åå¨çæ§è¡ãï¼
妿å¤ä¸ªåç±»åç触åå¨ä¸ºåæ ·äºä»¶åäºå®ä¹ï¼ é£ä¹å®ä»¬å°æç§å- æ¯é¡ºåºè¢«æ¿æ´»ã
SELECT 并䏿´æ¹ä»»ä½è¡ï¼å æ¤ä½ ä¸è½å建 SELECT 触åå¨ãè¿ç§åºåä¸è§ååè§å¾æ´åéäºã
请åè Part V ‘‘Triggers’’ è·åæ´å¤ä¿¡æ¯ã
PARAMETERS åæ°
|
name |
èµäºæ°è§¦åå¨çåç§°ãå®å¿éåä»»ä½ä½ç¨äºåä¸è¡¨ç触åå¨ä¸åã
|
BEFORE |
||
|
AFTER |
å³å®è¯¥å½æ°æ¯å¨äºä»¶ä¹åè¿æ¯ä¹åè°ç¨ã
|
event |
INSERTï¼DELETE æ UPDATE å¶ä¸ä¹ä¸ã å®å£°æå»å触åå¨çäºä»¶ãå¤ä¸ªäºä»¶å¯ä»¥ç¨ OR 声æã | ||
|
table |
触åå¨ä½ç¨ç表åç§°ï¼å¯ä»¥ç¨æ¨¡å¼ä¿®é¥°ï¼ã |
FOR EACH ROW
FOR EACH STATEMENT
è¿äºé项声æè§¦åå¨è¿ç¨æ¯å¦ä¸ºè§¦åå¨äºä»¶å½±åçæ¯ä¸ªè¡è§¦å䏿¬¡ï¼ è¿æ¯åªä¸ºæ¯æ¡ SQL è¯å¥è§¦å䏿¬¡ã妿齿²¡æå£°æï¼ FOR EACH STATEMENT æ¯ç¼ºçã
|
func |
ä¸ä¸ªç¨æ·æä¾ç彿°ï¼å®å£°æä¸ºä¸æ¥ååæ°å¹¶ä¸è¿å trigger ç±»åã |
arguments
ä¸ä¸ªå¯éçç¨éå·åéçåæ°å表ï¼å®å°å¨è§¦å卿§è¡çæ¶åæä¾ç»å½æ°ï¼ è¿äºåæ°æ¯ææ¬å串常éãä¹å¯ä»¥å¨è¿éåç®åçåå- åæ°å¼å¸¸éï¼ä½æ¯å®ä»¬ä¼è¢«è½¬æ¢æå串ã è¯·æ£æ¥å®ç°è¯è¨ä¸- å³äºå¦ä½å¨è§¦åå¨å½æ°ä¸è®¿é®è§¦åå¨åæ°çæè¿°ï¼ è¿äºåæ°å¯è½åæ®éç彿°åæ°ä¸åã
NOTES 注æ
è¦å¨ä¸ä¸ªè¡¨ä¸å建ä¸ä¸ªè§¦åå¨ï¼ç¨æ·å¿éå¨è¯¥è¡¨ä¸æ TRIGGER æéã
å¨ PostgreSQL çæ¬ 7.3 以åï¼ æä»¬å¿é¡»æè§¦åå¨å½æ°å£°æä¸ºè¿åå ä½ç±»å opaqueï¼ è䏿¯ triggerãä¸ºäºæ¯æè£è½½èçè½¬å¨æä»¶ï¼ CREATE TRIGGER å°æ¥åä¸ä¸ªå£°æä¸ºè¿å opaque ç彿°ï¼ 使¯å®å°ååºä¸æ¡ NOTICE 并䏿彿°å£°æçè¿åç±»åæ¹æ triggerã
ç¨ DROP TRIGGER [drop_trigger(7)] è·åå¦ä½å é¤è§¦åå¨çä¿¡æ¯ã
EXAMPLES ä¾å
Section 33.4 ‘‘Triggers’’ åå«ä¸ä¸ªå®æ´çä¾åã
COMPATIBILITY å¼å®¹æ§
CREATE TRIGGER éç CREATE TRIGGER è¯å¥å®ç°äºä¸ä¸ª SQL99 æ åçåéã ï¼SQL92 éæ²¡æè§¦åå¨ï¼ ç®åä»ç¶ç¼ºå°ä¸é¢çåè½â¶
|
• |
SQL99 å许触åå¨ä¸ºæå®çåæ®µçæ´æ°è¿è¡è§¦åï¼ä¹å°±æ¯è¯´ï¼AFTER UPDATE OF col1, col2ï¼ã | ||
|
• |
SQL99 åè®¸ä½ ä¸º "old" å "new" è¡æè表å®ä¹å«åï¼ç¨äºå®ä¹è§¦åå¨çå¨ä½ï¼ä¹å°±æ¯è¯´ï¼ CREATE TRIGGER ... ON tablename REFERENCING OLD ROW AS somename NEW ROW AS othername ...)ãå 为 PostgreSQL å许触åå¨è¿ç¨ä»¥ä»»ææ°éçç¨æ·å®ä¹è¯- è¨è¿è¡ä¹¦åï¼æä»¥è®¿é®æ°æ®ç工使¯ç¨åè¯è¨ç¸å³çæ¹æ³å®ç°çã | ||
|
• |
PostgreSQL åªå许为触åçå¨ä½æ§è¡åå¨çè¿ç¨ãSQL99 å许æ§è¡ä¸äºå¶ä»ç SQL å½ä»¤ï¼ æ¯å¦é£ CREATE TABLE ä½ä¸ºè§¦åå¨å¨ä½ã è¿ä¸ªéæ- ¢å¹¶ä¸é¾ç»å¼ï¼åªè¦å建ä¸ä¸ªæ§è¡è¿äºå½ä»¤çåå¨è¿ç¨å³å¯ã |
SQL99 è¦æ±å¤ä¸ªè§¦åå¨åºè¯¥ä»¥åå»ºçæ¶é´é¡ºåºæ§è¡ã PostgreSQL éç¨çæ¯æç§åå顺åºï¼ æä»¬è®¤ä¸ºè¿æ ·æ´å æ¹ä¾¿ã
ç¨ OR ç»ä¸ä¸ªè§¦åå¨å£°æå¤ä¸ªå¨ä½æ¯ PostgreSQL 对æ åçæ©å±ã
SEE ALSO åè§
CREATE FUNCTION [create_function(7)], ALTER TRIGGER [alter_trigger(l)], DROP TRIGGER [drop_trigger(l)]
è¯è
Postgresql 䏿ç½ç« ä½ä¼å¹³ <laser@pgsqldb.org>
è·
æ¬é¡µé¢ä¸æçç±ä¸æ
man
æå页计åæä¾ã
䏿 man
æå页计åï¼https://github.com/man-pages-zh/manpages-zh