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

TOP

Êý¾Ý¿â¸´Ï°3¨D¨DÊý¾Ý¿âÍêÕûÐÔ(¶þ)
2015-07-24 10:57:30 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:5´Î
Tags£ºÊý¾Ý¿â ¸´Ï° ÍêÕûÐÔ
£¬ÔÙ´´½¨Ò»¸öStudent±í£¬ËüµÄÊôÐÔD#ÉÏÉùÃ÷ÁËÒ»¸öÒýÓÃDept(D#)µÄÍâ¼ü£º

create table Student( S# char(10) primary key, name char(20), gender char(1) check (gender in ('F', 'M')), D# char(3) foreign key references Dept(D#) );

ÉÏÃæµÄÉùÃ÷µÈ¼ÛÓÚ£º

create table Student( S# char(10) primary key, name char(20), gender char(1) check (gender in ('F', 'M')), D# char(3), contraint dfk foreign key references Dept(D#) );

ÕâÀïÍâ¼üµÄÔ¼Êø¾ÍÊÇÏÞÖÆÑ§Éú±íÀïµÄD#±ØÐëÔÚϵ±íÀïµÄD#ÖгöÏÖ£¬ÄÇôºÜÈÝÒ×Ïëµ½Ò»¸öÎÊÌ⣺Èç¹ûUSTCÐÂÈÎУ³¤ÍòÀÏ´ó°Ñ11ϵ²ðÁË£¬Ò²¾ÍÊÇϵ±íÀï°ÑD#Ϊ¡¯011¡¯µÄÔª×éɾ³ýÁ˵ϰ£¬ÄÇÎÒÃÇ11ϵµÄѧÉúÔÚStudent±íÀïµÄtuples²»¾Í²»Âú×ãÍâ¼üÔ¼ÊøÁËÂð

Õâʱºò¾ÍÐèÒªÒýÈë¹ØÁª¶¯×÷£¬¹ØÁª¶¯×÷·ÖΪ¼¶Áª£¨Cascade£©¶¯×÷ºÍÉèÖã¨Set£©¶¯×÷

1.¼¶Áª¶¯×÷

¼¶Áª¶¯×÷¾ÍÊÇһϵÁеÄÖ÷¼ü-Íâ¼ü-Ö÷¼ü-Íâ¼ü-¡­Ô¼ÊøÒýÓÃÁ´ÌõµÄºó¶ËµÄij¸öÖ÷¼üdelete»òupdate£¬»á²úÉú£¨×Ô¶¯µÄ£¬´¥·¢Æ÷£©ÑØÒýÓÃÁ´Ìõ´ÓºóÍùǰµÄһϵÁÐÍâ¼üµÄdelete»òupdate²Ù×÷

ÀýÈçÎÒÃÇÉùÃ÷Ò»¸öD#µÄɾ³ý¼¶Áª£¬¼´£º

create table Student( S# char(10) primary key, name char(20), gender char(1) check (gender in ('F', 'M')), D# char(3) foreign key references Dept(D#) on delete cascade );

´Ëʱɾ³ý11ϵ£¬ÄÇô¸ù¾Ý¼¶Áª¶¯×÷¶¨Ò壬ËùÓÐ11ϵµÄѧÉú¶¼±»É¾³ý£¬ÒòΪStudent±íͨ¹ýÍâ¼üÒýÓÃÁËDept±íµÄÖ÷¼ü

ÔÙ¼ÙÉèDept±íÒýÓÃÁËÒ»¸öѧУ±àºÅU#µÄÍâ¼ü£¬ËüÊÇÒ»¸öUniversity±íµÄÖ÷¼ü£¬´Ëʱ¹¹³ÉÁËÒ»¸öÒýÓÃÁ´Ìõ£¬ÈôÕâ¸öUniversity±íɾ³ýÁËUSTCµÄÌõÄ¿£¬ÄÇô¸ù¾Ý¼¶Áª¶¯×÷¶¨ÒåUSTCµÄ11ϵ£¬11ϵµÄѧÉú¶¼½«±»×Ô¶¯É¾³ý

¼¶Áª¶¯×÷Ò²¿ÉÒÔÊÇon update cascade£¬±ÈÈç11ϵ¸Äϵ±ðºÅΪ1ϵÁË£¬ÄÇô11ϵµÄѧÉúÄܹ»×Ô¶¯µÄ°ÑD#¸Ä³É¡®001¡¯

DBMS´¦Àí¼¶Áª¶¯×÷Êǰ´ÊÂÎñÀ´´¦ÀíµÄ£¬ÈôÔÚÒýÓÃÁ´ÌõÖÐijһ¸ö²¿·ÖµÄ¼¶Áª¶¯×÷Î¥·´ÁËÆäËûµÄÍêÕûÐÔÔ¼Êø£¬ÄÇôÕû¸öÐ޸͝×÷¶¼»á±»»Ø¹ö£¨ÊÂÎñµÄ¸ÅÄ£¬¼´ÐÞ¸Äʧ°Ü

pptÖÐдµÀ£º

Referential integrity is only checked at the end of a transaction
¨C¨C Intermediate steps are allowed to violate referential integrity provided later steps remove the violation, otherwise it would be impossible to create some database states, e.g. insert two tuples whose foreign keys point to each other

ºÜ²»ÐÒµÄÊÇÔÚʵÑéÖÐÎÒ·¢ÏÖÕâÌõ¹æÔòMySQLÊÊÓõ«Oracle²¢²»ÊÊÓã¨ÖÁÉÙÔÚPL/SQLÖУ©

SQLÖ§³ÖÒ»¸öÍâ¼üͬʱÓÐÒ»¸öɾ³ý¼¶ÁªºÍÒ»¸ö¸üм¶Áª

2.ÉèÖö¯×÷

ÉèÖö¯×÷±È½ÏºÃÀí½â£º

on delete set null on delete set default

5.4 ¶ÏÑԺʹ¥·¢Æ÷

£¨1£©¶ÏÑÔ

SQL»¹Ö§³ÖʹÓöÏÑÔ£¨Assertion£©ÔÚ¹ØÏµÍⲿ¶¨ÒåÊý¾Ý¿â±ØÐëÂú×ãµÄÌõ¼þ£¬Ó﷨Ϊ£º

create assertion 
               
                 check 
                
                 ;
                
               

AssertionÓеãÀàËÆÓÚC.J.Date¶¨ÒåµÄÊý¾Ý¿âÔ¼Êø£¬¿ÉÒÔÕë¶Ôµ¥±í»ò¶à±í

pptÖÐÒ»¸ö¸´ÔÓµÄÀý×Ó£¬ÏÞ¶¨Ã¿¸ö²¿ÃŵŤ×Ê×ܺͱØÐëСÓÚd1²¿ÃŵŤ×Ê×ܺͣº

create assertion sac check( not exists( select * from EMP e2 where (select sum(sal) from EMP e1 where e1.d# = e2.d#) >= (select sum(sal) from EMP where d# = 'd1') ) );

PS£ºÎÒÕ¦¾õµÃµÚÒ»¸öwhereºóÃæÒª¼Ód# ~= 'd1' andÄØ£¿

£¨2£©´¥·¢Æ÷

´¥·¢Æ÷¶¨ÒåÁËÊý¾Ý¿â״̬¸Ä±ä£¨Ôª×éÐ޸ģ©Ê±ÐèÒª×Ô¶¯Ö´ÐеÄһϵÁж¯×÷£¬¶¨Òå´¥·¢Æ÷°üÀ¨Á½¸öÒªµã£º

´¥·¢Ìõ¼þ Ö´Ðж¯×÷

´¥·¢Æ÷»¹Óм¸¸öÖØÒªÊôÐÔ£º

ÊÂǰ´¥·¢»òʺ󴥷¢ Ðд¥·¢»¹ÊÇÕûÌå´¥·¢

ÊÂǰ´¥·¢»òʺ󴥷¢±È½ÏºÃÀí½â£¬Ðд¥·¢»¹ÊÇÕûÌå´¥·¢ÊÇÖ¸µÄÊÇÒ»Ìõupdate»òdeleteʱÈôÉæ¼°¶à¸öÔª×éµÄÐ޸ģ¬ÊÇÕûÌå´¥·¢Ò»´Î»¹ÊÇÿ¸öÔª×é¶¼´¥·¢Ò»´Î

»¹ÊǾÙÀý˵Ã÷£¬ÏÂÃæÊÇÎÒÔÚOracleÉÏ´´½¨µÄÐд¥·¢Æ÷£º

create or replace trigger countStud after delete or insert or update on Stud for each row begin update Dept set S_count = S_count+1 where D# = :new.D#; update Dept set S_count = S_count-1 where D# = :old.D#; end;

ÕâÊÇÒ»¸öÓÃÀ´Í³¼ÆÏµÀïÈËÊýµÄ´¥·¢Æ÷£¨»òÕß˵½Ð×ö±£Ö¤ÏµÀïÈËÊýÍêÕûÐԵĴ¥·¢Æ÷£©£¬·Öµã˵Ã÷£º

after delete or insert or update on StudÖ¸¶¨ÁË´¥·¢Æ÷µÄÌõ¼þºÍ´¥·¢Ê±»ú£ºµ±Stud±íÓÐɾ³ý¡¢²åÈë»ò¸üвÙ×÷Ö®ºó´¥·¢ for each rowÉùÃ÷ÕâÊÇÒ»¸öÐд¥·¢Æ÷£¬°´Ðд¥·¢ beginºÍend°üÌåÀïÖ¸¶¨ÁË´¥·¢Æ÷µÄ¶¯×÷

ÖÁÓÚÆäÖеÄ:newºÍÊÇ:old±£Áô±äÁ¿£¬¶ÔӦɾ³ý¡¢²åÈë»ò¸üÐÂÈý¸ö²Ù×÷ËûÃÇÓÐÈçϺ¬Ò壺

?

º¬Òå insert update delete
:new вåÈëµÄÔª×é ¸üкóµÄÔª×é null
:old null ¸üÐÂǰµÄÔª×é ɾ³ýµÄÔª×é

Ê×Ò³ ÉÏÒ»Ò³ 1 2 ÏÂÒ»Ò³ βҳ 2/2/2
¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£ºORA-02049:³¬Ê±:·Ö²¼Ê½ÊÂÎñ´¦ÀíµÈ.. ÏÂһƪ£º»ùÓÚORACLEÊý¾Ý¿âµÄÑ­»·½¨±í¼°Ñ­..

ÆÀÂÛ

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

¡¤Linuxϵͳ¼ò½é (2025-12-25 21:55:25)
¡¤Linux°²×°MySQL¹ý³Ì (2025-12-25 21:55:22)
¡¤Linuxϵͳ°²×°½Ì³Ì£¨ (2025-12-25 21:55:20)
¡¤HTTP Åc HTTPS µÄ²î„ (2025-12-25 21:19:45)
¡¤ÍøÕ¾°²È«±ØÐ޿ΣºÍ¼ (2025-12-25 21:19:42)