ORACLE PL/SQL ´¥·¢Æ÷(trigger)ѧϰ±Ê¼Ç
1¡¢´¥·¢Æ÷µÄ¸ÅÄî
´¥·¢Æ÷Ò²ÊÇÒ»ÖÖ´øÃûµÄPL/SQL¿é¡£´¥·¢Æ÷ÀàËÆÓÚ¹ý³ÌºÍº¯Êý£¬ÒòΪËüÃǶ¼ÊÇÓµÓÐÉùÃ÷¡¢Ö´ÐкÍÒì³£´¦Àí¹ý³ÌµÄ´øÃûPL/SQL¿é¡£Óë°üÀàËÆ£¬´¥·¢Æ÷±ØÐë´æ´¢ÔÚÊý¾Ý¿âÖв¢ÇÒ²»Äܱ»¿é½øÐб¾µØ»¯ÉùÃ÷¡£
¶ÔÓÚ´¥·¢Æ÷¶øÑÔ£¬µ±´¥·¢Ê¼þ·¢ÉúµÄʱºò¾Í»áÏÔʽµØÖ´Ðиô¥·¢Æ÷£¬²¢ÇÒ´¥·¢Æ÷²»½ÓÊܲÎÊý¡£
´´½¨´¥·¢Æ÷µÄÓï·¨ÈçÏÂ
CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE | AFTER | INSTEAD OF} triggering_event
[referencing_clause]
[WHEN trigger_condition]
[FOR EACH ROW]
Trigger_body;
ÆäÖÐreferencing_clause×Ó¾äµÄÓÃ;ÊÇͨ¹ýÒ»¸ö²»Í¬µÄÃû³Æ£¬ÒýÓõ±Ç°ÕýÔÚ±»¸üеļǼÐÐÖеÄÊý¾Ý¡£WHEN×Ó¾äÖеÄtrigger_condition—Èç¹û³öÏÖ—¾ÍÓ¦¸ÃÊ×ÏÈÖ´ÐÐÅжϣ¬Ö»Óе±Õâ¸öÌõ¼þÖµÎªÕæµÄʱºò£¬²Å»áÖ´Ðд¥·¢Æ÷µÄÖ÷Ìå´úÂë¡£
2¡¢DML´¥·¢Æ÷µÄ¼¤»î˳Ðò
1£©Ö´ÐÐbeforeÓï¾ä¼¶´¥·¢Æ÷—Èç¹û´æÔÚÕâÖÖ´¥·¢Æ÷
2£©¶ÔÊܸÃÓï¾äÓ°ÏìµÄÿһÐмǼ
Ö´ÐÐbeforeÐм¶´¥·¢Æ÷—Èç¹û´æÔÚÕâÖÖ´¥·¢Æ÷
Ö´ÐиÃÓï¾ä±¾Éí
Ö´ÐÐafterÐм¶´¥·¢Æ÷--Èç¹û´æÔÚÕâÖÖ´¥·¢Æ÷
3£©Ö´ÐÐafterÓï¾ä¼¶´¥·¢Æ÷--Èç¹û´æÔÚÕâÖÖ´¥·¢Æ÷
ͬһÖÖÀàÐ͵Ĵ¥·¢Æ÷µÄµã»ð´ÎÐòûÓо¹ý¶¨Òå¡£Èç¹û¸Ã´ÎÐòºÜÖØÒªµÄ»°£¬ÄÇô½¨Ò齫ËùÓÐÕâЩ²Ù×÷×éºÏµ½Ò»¸ö´¥·¢Æ÷µ±ÖС£
3¡¢Ðм¶´¥·¢Æ÷ÖеĹØÁª±êʶ·û
´¥·¢Æ÷µÄ¼¤»îÓï¾äÿ´¦ÀíÒ»ÐÐÊý¾Ý£¬Ðм¶´¥·¢Æ÷¾Í»á¼¤»îÒ»´Î¡£¿ÉÒÔÔÚÕâÖÖÐм¶´¥·¢Æ÷ÄÚ²¿£¬·ÃÎÊÕý±»´¦ÀíµÄ¼Ç¼ÐÐÖеÄÊý¾Ý¡£ÕâÊÇͨ¹ýÁ½¸ö¹ØÁª±êʶ·û--:oldºÍ:new—ʵÏֵġ£¹ØÁª±êʶ·ûÒ²ÊÇPL/SQLµÄÒ»ÖÖÌØÊâµÄ°ó¶¨±äÁ¿¡£±êʶ·ûÇ°ÃæµÄðºÅ£¬¼È˵Ã÷Õâ¶þÕß¶¼Êǰ󶨱äÁ¿£¬Í¬Ê±Ò²ËµÃ÷ËüÃDz»ÊÇÒ»°ãµÄPL/SQL±äÁ¿¡£PL/SQL±àÒëÆ÷»á½«ËüÃÇ¿´×÷ÏÂÃæÕâ¸öÀàÐ͵ļǼ£º
Triggering_table%ROWTYPE
ÆäÖÐtriggering_tableÊÇÔÚÆäÉ϶¨Òå´¥·¢Æ÷µÄ±íÃû¡£ÓÚÊÇ£¬ÏÂÃæÕâÖÖÒýÓÃ
:new.field
¾ÍÖ»Óе±ÆäÖеÄfieldÊǸô¥·¢±íÖеÄ×Ö¶ÎÃûʱ²Å»áÓÐЧ¡£
´¥·¢Óï¾ä
:old
:new
INSERT
䶨Òå—ËùÓÐ×ֶξùΪNULL
´¥·¢Óï¾äÍê³ÉµÄʱºò£¬Òª²åÈëµÄÖµ
UPDATE
¸üÐÂÒÔǰÏàÓ¦¼Ç¼ÐеÄÔʼֵ
´¥·¢Óï¾äÍê³ÉµÄʱºò£¬Òª¸üеÄÖµ
DELETE
ɾ³ýÒÔǰÏàÓ¦¼Ç¼ÐеÄÔʼֵ
䶨Òå—ËùÓÐ×ֶξùΪNULL
×¢Ò⣺INSERTÓï¾äÉÏûÓж¨Òå:old±êʶ·û£¬DELETEÓï¾äÉÏҲûÓж¨Òå:new±êʶ·û¡£Èç¹ûÔÙINSERTÓï¾äÉ
Ïà¹ØÎĵµ£º
¹¦ÄÜ£ºpl plusÖ´Ðб¾µØµÄsqlÎļþÖеÄsqlÓï¾ä
˵Ã÷£º±ÈÈ磺e:\zhaozhenlongÏÂÓÐcreate_table.sqlÎļþ£¬Ôò°´ÈçÏ·½·¨Ö´ÐУº
²½Ö裺
1¡¢ÔÚpl plusµÄ windowÏ£¬
2¡¢Ö´ÐУº
@e:\zhaozhenlong\drop_table.sql
@e:\zhaozhenlong\create_table.sql
......
ΪÁË´¦Àí SQL Óï¾ä£¬ORACLE ±ØÐë·ÖÅäһƬ½ÐÉÏÏÂÎÄ( context area )µÄÇøÓòÀ´´¦ÀíËù±ØÐèµÄÐÅÏ¢£¬ÆäÖаüÀ¨Òª´¦ÀíµÄÐеÄÊýÄ¿£¬Ò»¸öÖ¸ÏòÓï¾ä±»·ÖÎöÒÔºóµÄ±íʾÐÎʽµÄÖ¸ÕëÒÔ¼°²éѯµÄ»î¶¯¼¯(active set)¡£
ÓαêÊÇÒ»¸öÖ¸ÏòÉÏÏÂÎĵľä±ú( handle)»òÖ¸Õ롣ͨ¹ýÓα꣬PL/SQL¿ÉÒÔ¿ØÖÆÉÏÏÂÎÄÇøºÍ´¦ÀíÓï¾äʱÉÏÏÂÎÄÇø»á·¢ÉúÐ ......
using System;
using System.Text.RegularExpressions;
using Microsoft.SqlServer.Server;
public partial class UserDefinedFunctions
{
[Microsoft.SqlServer.Server.SqlFunction(IsDeterministic = true,IsPrecise = true)]
public static bool RegExIsMatch(string pattern,string matchString)
{
......
°üÓɰü¹æ·¶ºÍ°üÌåÁ½²¿·Ö×é³É¡£
1¡¢°ü¹æ·¶£¨Package Specification£©
°ü¹æ·¶£¬Ò²½Ð×ö°üÍ·£¬°üº¬ÁËÓйذüµÄÄÚÈݵÄÐÅÏ¢¡£µ«ÊÇ£¬Ëü²»°üº¬Èκιý³ÌµÄ´úÂë¡£
´´½¨°üÍ·µÄÓï·¨Ò»°ãÈçÏÂ
CREATE [OR REPLACE] PACKAGE package_name {IS | AS}
Procedure_name | function_name | variable_declaration | type_def ......