ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

PL-SQL´¥·¢Æ÷(¶þ)
2014-11-23 19:02:37 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:73´Î
Tags£ºPL-SQL ´¥·¢Æ÷
¶à¸ö±í½øÐÐÁª½á(join)¶ø³É£¬Òò¶ø²¢·ÇÊÇËùÓеÄÁª½á¶¼Êǿɸüеġ£
µ«¿ÉÒÔ°´ÕÕËùÐèµÄ·½Ê½Ö´ÐиüУ¬
ÀýÈçÏÂÃæÇé¿ö£º
CREATE OR REPLACE VIEW emp_view
AS
SELECT deptno, count(*) total_employeer, sum(sal) total_salary
FROM emp GROUP BY deptno;

ÔÚ´ËÊÓͼÖÐÖ±½Óɾ³ýÊÇ·Ç·¨£º
SQL>DELETE FROM emp_view WHERE deptno=10;
DELETE FROM emp_view WHERE deptno=10
*
ERROR λÓÚµÚ1 ÐÐ:
ORA-01732: ´ËÊÓͼµÄÊý¾Ý²Ù×ݲÙ×÷·Ç·¨

µ«ÊÇ¿ÉÒÔ´´½¨INSTEAD_OF´¥·¢Æ÷À´ÎªDELETE ²Ù×÷Ö´ÐÐËùÐèµÄ´¦Àí£¬¼´É¾³ýEMP±íÖÐËùÓлù×¼ÐУº

CREATE OR REPLACE TRIGGER emp_view_delete
INSTEAD OF DELETE ON emp_view FOR EACH ROW
BEGIN
DELETE FROM emp WHERE deptno= :old.deptno;
END emp_view_delete;

DELETE FROM emp_view WHERE deptno=10;


¢ß´´½¨ÏµÍ³Ê¼þ´¥·¢Æ÷
ORACLEÌṩµÄϵͳʼþ´¥·¢Æ÷¿ÉÒÔÔÚDDL»òÊý¾Ý¿âϵͳÉϱ»´¥·¢¡£DDLÖ¸µÄÊÇÊý¾Ý¶¨ÒåÓïÑÔ£¬ÈçCREATE ¡¢ALTER¼°DROP µÈ¡£
¶øÊý¾Ý¿âϵͳʼþ°üÀ¨Êý¾Ý¿â·þÎñÆ÷µÄÆô¶¯»ò¹Ø±Õ£¬Óû§µÄµÇ¼ÓëÍ˳ö¡¢Êý¾Ý¿â·þÎñ´íÎóµÈ¡£´´½¨ÏµÍ³´¥·¢Æ÷µÄÓï·¨ÈçÏ£º

1.´´½¨´¥·¢Æ÷µÄÒ»°ãÓï·¨ÊÇ:
CREATE OR REPLACE TRIGGER [sachema.] trigger_name
{BEFORE|AFTER}
{ddl_event_list | database_event_list}
ON { DATABASE | [schema.] SCHEMA }
[WHEN_clause]
begin
trigger_body;
end;
ÆäÖÐ: ddl_event_list£ºÒ»¸ö»ò¶à¸öDDL ʼþ£¬Ê¼þ¼äÓÃOR ·Ö¿ª£»database_event_list£ºÒ»¸ö»ò¶à¸öÊý¾Ý¿âʼþ£¬Ê¼þ¼äÓÃOR ·Ö¿ª£»
ϵͳʼþ´¥·¢Æ÷¼È¿ÉÒÔ½¨Á¢ÔÚÒ»¸öģʽÉÏ£¬ÓÖ¿ÉÒÔ½¨Á¢ÔÚÕû¸öÊý¾Ý¿âÉÏ¡£
µ±½¨Á¢ÔÚģʽ(SCHEMA)Ö®ÉÏʱ£¬Ö»ÓÐģʽËùÖ¸¶¨Óû§µÄDDL²Ù×÷ºÍËüÃÇËùµ¼ÖµĴíÎó²Å¼¤»î´¥·¢Æ÷, ĬÈÏʱΪµ±Ç°Óû§Ä£Ê½¡£
µ±½¨Á¢ÔÚÊý¾Ý¿â(DATABASE)Ö®ÉÏʱ£¬¸ÃÊý¾Ý¿âËùÓÐÓû§µÄDDL²Ù×÷ºÍËûÃÇËùµ¼ÖµĴíÎó£¬ÒÔ¼°Êý¾Ý¿âµÄÆô¶¯ºÍ¹Ø±Õ¾ù¿É¼¤»î´¥·¢Æ÷¡£
ÒªÔÚÊý¾Ý¿âÖ®ÉϽ¨Á¢´¥·¢Æ÷ʱ£¬ÒªÇóÓû§¾ßÓÐADMINISTER DATABASE TRIGGERȨÏÞ¡£

¢àɾ³ý´¥·¢Æ÷£º
DROP TRIGGER trigger_name;
µ±É¾³ýÆäËûÓû§Ä£Ê½ÖеĴ¥·¢Æ÷Ãû³Æ£¬ÐèÒª¾ßÓÐDROP ANY TRIGGERϵͳȨÏÞ£¬
µ±É¾³ý½¨Á¢ÔÚÊý¾Ý¿âÉϵĴ¥·¢Æ÷ʱ£¬Óû§ÐèÒª¾ßÓÐADMINISTER DATABASE TRIGGERϵͳȨÏÞ¡£
´ËÍ⣬µ±É¾³ý±í»òÊÓͼʱ£¬½¨Á¢ÔÚÕâЩ¶ÔÏóÉϵĴ¥·¢Æ÷Ò²ËæÖ®É¾³ý¡£


´¥·¢Æ÷µÄ״̬
Êý¾Ý¿âTRIGGER µÄ״̬£º
ÓÐЧ״̬(ENABLE)£ºµ±´¥·¢Ê¼þ·¢Éúʱ£¬´¦ÓÚÓÐЧ״̬µÄÊý¾Ý¿â´¥·¢Æ÷TRIGGER ½«±»´¥·¢¡£
ÎÞЧ״̬(DISABLE)£ºµ±´¥·¢Ê¼þ·¢Éúʱ£¬´¦ÓÚÎÞЧ״̬µÄÊý¾Ý¿â´¥·¢Æ÷TRIGGER ½«²»»á±»´¥·¢£¬´Ëʱ¾Í¸úûÓÐÕâ¸öÊý¾Ý¿â´¥·¢Æ÷(TRIGGER) Ò»Ñù¡£
Êý¾Ý¿âTRIGGERµÄÕâÁ½ÖÖ״̬¿ÉÒÔ»¥Ïàת»»¡£¸ñʽΪ£º
ALTER TIGGER trigger_name [DISABLE | ENABLE ];
Àý£ºALTER TRIGGER emp_view_delete DISABLE;
ALTER TRIGGERÓï¾äÒ»´ÎÖ»ÄܸıäÒ»¸ö´¥·¢Æ÷µÄ״̬£¬¶øALTER TABLEÓï¾äÔòÒ»´ÎÄܹ»¸Ä±äÓëÖ¸¶¨±íÏà¹ØµÄËùÓд¥·¢Æ÷µÄʹÓÃ״̬¡£¸ñʽΪ£º
ALTER TABLE [schema.]table_name {ENABLE|DISABLE} ALL TRIGGERS;
Àý£ºÊ¹±íEMP ÉϵÄËùÓÐTRIGGER ʧЧ£º
ALTER TABLE emp DISABLE ALL TRIGGERS;

Ê×Ò³ ÉÏÒ»Ò³ 1 2 ÏÂÒ»Ò³ βҳ 2/2/2
¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£º¡¾sqlÓï¾ä¡¿ºÃÓõÄsqlÓï¾ä¨DÊʺÏ×.. ÏÂһƪ£ºcmdÏÂÔËÐÐdb2---DB21061E δ³õʼ..

ÆÀÂÛ

ÕÊ¡¡¡¡ºÅ: ÃÜÂë: (ÐÂÓû§×¢²á)
Ñé Ö¤ Âë:
±í¡¡¡¡Çé:
ÄÚ¡¡¡¡ÈÝ: