ç®åæ¥è®²åªå°±æ¯äºä»¶è§¦åã
æ¯å¦ä½ 对æ°æ®åºä¸ç表è¿è¡äºä¸ä¸ªæå çæä½ï¼ä½ æ³å¨ä½ å³å°åæè
å®æè¿ä¸ªæä½çæ¶åç¨åºè½èªå¨åä¸ç¹å«çå·¥ä½ï¼æ¯å¦ä½ æ³å¯¹æå
¥æ°æ®æ£æ¥ä¸ä¸æè
对å é¤åçæ°æ®æ»æ°è¿è¡ä¸ä¸ç»è®¡ã
æ¬æ¥åªï¼ä½ å¯ä»¥æè¿ä¸ªå·¥ä½åå¨èªå·±çç¨åºéï¼å°±æ¯ææ£æ¥åå¨ä½ æå
¥å¨ä½ä¹åæè
æç»è®¡æ°ç®åå¨å é¤å¨ä½ä¹åãè¿æ ·çé®é¢æ¯ï¼ä½ è¦åæå çæ¶åå°±é½è¦åè¿äºä»£ç ï¼èä¸å¾å®¹æå°±éæ¼äºã
è触åå¨åªï¼ä½ å®ä¹å¨æ个æä½ä¸ï¼æ¯å¦æé£ä¸ªæ£æ¥çå·¥ä½è¿ç¨å®ä¹ææå
¥çå触åå¨ï¼æç»è®¡å·¥ä½å®ä¹æå触åå¨ï¼é£ä¹å¨ä½ è¿è¡æå
¥å é¤çæ¶åï¼æ°æ®åºé£è¾¹çç¨åºå°±èªå¨çç»ä½ åäºè¿ä¸ªå·¥ä½äºã
主è¦ä½ç¨åªï¼ææè§
ä¸æ¯å®æ´æ§ï¼é²æ¢èªå·±ç¼ç¨çéæ¼ï¼ï¼
äºæ¯ç®åï¼
ä¸æ¯ç±æ°æ®åºç¨åºï¼æ¯å¦Oracleï¼è¿è¡è¿é¡¹å·¥ä½ï¼èä¸æ¯ç±ä½ èªå·±çç¨åºåï¼æçé«ã
ä¸é¢æ¯äººå®¶çä¸äºæç¨ï¼å
¶å®éçæ¯å¾ç®åçãä½ å¯ä»¥ç¨å®åé¢è®²çå 个æ°æ®åºçä¾åï¼èªå·±åä¸ä¸ªï¼è¯è¯å°±ç¥éäºã
ââââââââââââââââââââââââââââââââââââââââ
ä¸ è§¦åå¨ä»ç»
触åå¨æ¯ä¸ç§ç¹æ®çåå¨è¿ç¨ï¼å®å¨æå
¥ï¼å é¤æä¿®æ¹ç¹å®è¡¨ä¸
çæ°æ®æ¶è§¦åæ§è¡ï¼å®æ¯æ°æ®åºæ¬èº«æ åçåè½ææ´ç²¾ç»åæ´å¤æç
æ°æ®æ§å¶è½åãæ°æ®åºè§¦åå¨æ以ä¸çä½ç¨ï¼
* å®å
¨æ§ãå¯ä»¥åºäºæ°æ®åºçå¼ä½¿ç¨æ·å
·ææä½æ°æ®åºçæç§æ
å©ã
# å¯ä»¥åºäºæ¶é´éå¶ç¨æ·çæä½ï¼ä¾å¦ä¸å
许ä¸çååèåæ¥
ä¿®æ¹æ°æ®åºæ°æ®ã
# å¯ä»¥åºäºæ°æ®åºä¸çæ°æ®éå¶ç¨æ·çæä½ï¼ä¾å¦ä¸å
许è¡ç¥¨
çä»·æ ¼çåå¹
ä¸æ¬¡è¶
è¿10%ã
* 审计ãå¯ä»¥è·è¸ªç¨æ·å¯¹æ°æ®åºçæä½ã
# 审计ç¨æ·æä½æ°æ®åºçè¯å¥ã
# æç¨æ·å¯¹æ°æ®åºçæ´æ°åå
¥å®¡è®¡è¡¨ã
* å®ç°å¤æçæ°æ®å®æ´æ§è§åã
# å®ç°éæ åçæ°æ®å®æ´æ§æ£æ¥å约æã触åå¨å¯äº§çæ¯è§å
æ´ä¸ºå¤æçéå¶ãä¸è§åä¸åï¼è§¦åå¨å¯ä»¥å¼ç¨åææ°æ®åºå¯¹
象ãä¾å¦ï¼è§¦åå¨å¯åéä»»ä½ä¼å¾åè¿è¶
è¿èªå·±ä¿è¯éçæè´§ã
# æä¾å¯åç缺çå¼ã
* å®ç°å¤æçéæ åçæ°æ®åºç¸å
³å®æ´æ§è§åã触åå¨å¯ä»¥å¯¹æ°
æ®åºä¸ç¸å
³ç表è¿è¡è¿ç¯æ´æ°ãä¾å¦ï¼å¨auths表author_codeåä¸ç
å é¤è§¦åå¨å¯å¯¼è´ç¸åºå é¤å¨å
¶å®è¡¨ä¸çä¸ä¹å¹é
çè¡ã
# å¨ä¿®æ¹æå é¤æ¶çº§èä¿®æ¹æå é¤å
¶å®è¡¨ä¸çä¸ä¹å¹é
çè¡ã
# å¨ä¿®æ¹æå é¤æ¶æå
¶å®è¡¨ä¸çä¸ä¹å¹é
çè¡è®¾æNULLå¼ã
# å¨ä¿®æ¹æå é¤æ¶æå
¶å®è¡¨ä¸çä¸ä¹å¹é
çè¡çº§è设æ缺çå¼ã
# 触åå¨è½å¤æç»æåéé£äºç ´åç¸å
³å®æ´æ§çååï¼åæ¶è¯
å¾è¿è¡æ°æ®æ´æ°çäºå¡ãå½æå
¥ä¸ä¸ªä¸å
¶ä¸»å¥ä¸å¹é
çå¤é¨é®
æ¶ï¼è¿ç§è§¦åå¨ä¼èµ·ä½ç¨ãä¾å¦ï¼å¯ä»¥å¨books.author_code
åä¸çæä¸ä¸ªæå
¥è§¦åå¨ï¼å¦ææ°å¼ä¸auths.author_codeå
ä¸çæå¼ä¸å¹é
æ¶ï¼æå
¥è¢«åéã
* åæ¥å®æ¶å°å¤å¶è¡¨ä¸çæ°æ®ã
* èªå¨è®¡ç®æ°æ®å¼ï¼å¦ææ°æ®çå¼è¾¾å°äºä¸å®çè¦æ±ï¼åè¿è¡ç¹
å®çå¤çãä¾å¦ï¼å¦æå
¬å¸çå¸å·ä¸çèµéä½äº5ä¸å
åç«å³ç»è´¢å¡äºº
ååéè¦åæ°æ®ã
ORACLEä¸SYBASEæ°æ®åºç触åå¨æä¸å®çåºå«ï¼ä¸é¢å°åå«è®²è¿°
è¿ä¸¤ç§æ°æ®åºè§¦åå¨çä½ç¨ååæ³ã
äº ORACLE 触åå¨
ORACLE产çæ°æ®åºè§¦åå¨çè¯æ³ä¸ºï¼
create [or replace] trigger 触åå¨å 触åæ¶é´ 触åäºä»¶
on 表å
[for each row]
pl/sql è¯å¥
å
¶ä¸ï¼
触åå¨åï¼è§¦åå¨å¯¹è±¡çå称ãç±äºè§¦åå¨æ¯æ°æ®åºèªå¨æ§è¡
çï¼å æ¤è¯¥å称åªæ¯ä¸ä¸ªå称ï¼æ²¡æå®è´¨çç¨éã
触åæ¶é´ï¼ææ触åå¨ä½æ¶æ§è¡ï¼è¯¥å¼å¯åï¼
before---表示å¨æ°æ®åºå¨ä½ä¹å触åå¨æ§è¡ï¼
after---表示å¨æ°æ®åºå¨ä½ä¹ååºåå¨æ§è¡ã
触åäºä»¶ï¼ææåªäºæ°æ®åºå¨ä½ä¼è§¦åæ¤è§¦åå¨ï¼
insertï¼æ°æ®åºæå
¥ä¼è§¦åæ¤è§¦åå¨ï¼
updateï¼æ°æ®åºä¿®æ¹ä¼è§¦åæ¤è§¦åå¨ï¼
deleteï¼æ°æ®åºå é¤ä¼è§¦åæ¤è§¦åå¨ã
表 åï¼æ°æ®åºè§¦åå¨æå¨ç表ã
for each rowï¼å¯¹è¡¨çæ¯ä¸è¡è§¦åå¨æ§è¡ä¸æ¬¡ãå¦æ没æè¿ä¸
é项ï¼ååªå¯¹æ´ä¸ªè¡¨æ§è¡ä¸æ¬¡ã
举ä¾ï¼ä¸é¢ç触åå¨å¨æ´æ°è¡¨authsä¹å触åï¼ç®çæ¯ä¸å
许å¨
å¨æ«ä¿®æ¹è¡¨ï¼
create trigger auth_secure
before insert or update or delete //对æ´è¡¨æ´æ°å触å
on auths
begin
if(to_char(sysdate,'DY')='SUN'
RAISE_APPLICATION_ERROR(-20600,'ä¸è½å¨å¨æ«ä¿®æ¹è¡¨auths');
end if;
end
ä¸ SYBASEæ°æ®åºè§¦åå¨
SYBASEæ°æ®åºè§¦åå¨çä½ç¨ä¸ORACLEé常类似ï¼ä»
æè¾å°çå·®å¼ã
SYBASE产ç触åå¨çè¯æ³ä¸ºï¼
CREATE TRIGGER 触åå¨å
ON 表å
FOR INSERTï¼UPDATEï¼DELETE
AS
SQL_statement |
FOR INSERTï¼UPDATE
AS
IF UPDATE(column_name) [AND|OR UPDATE(column_name)]...
SQL_statements
ä¸é¢FORåå¥ç¨æ¥æå®å¨è§¦åå¨ä¸çåªäºæ°æ®æ´æ°å½ä»¤å¯æ¿æ´»è¯¥
触åå¨ãIF UPDATEåå¥æ£æ¥å¯¹æå®åçæä½ç±»åï¼å¨IF UPDATEåå¥
ä¸å¯æå®å¤ä¸ªåã
ä¸ORACLEä¸åï¼å¯¹äºæ¯æ¡SQLè¯å¥ï¼è§¦åå¨åªæ§è¡ä¸æ¬¡ã触åå¨
å¨æ°æ®æ´æ°è¯å¥å®æ以åç«å³æ§è¡ã触åå¨åå¯å¨å®çè¯å¥è¢«å½ä½ä¸
个äºå¡å¤çï¼äºå¡å¯ä»¥å¨è§¦åå¨ä¸åéã
ä¸é¢ä¸¾ä¾è¯´æSYBASE触åå¨çåæ³ã
create trigger forinsert_books
on books
for insert
as
if(select count(*) from auths,inserted
where auths.author_code=insert.author_code)!=@@rowcount
begin
rollback transaction
print "books è¡¨ä¸ author_code åçå¼å¨auths 表ä¸ä¸åå¨ã"
end
温馨提示:答案为网友推荐,仅供参考