sql >> Database teknologi >  >> RDS >> Oracle

Trigger for at håndhæve M-M-forhold

Mange-til-mange-betingelser bør ikke håndhæves ved hjælp af en trigger. Mange-til-mange-betingelser håndhæves ved at oprette en forbindelsestabel, der indeholder de pågældende nøgler, som derefter er fremmednøglede tilbage til de respektive overordnede tabeller.

Hvis din hensigt er at tillade mange medarbejdere at være i en afdeling, og at tillade en medarbejder at være medlem af mange afdelinger, vil den pågældende krydsningstabel se nogenlunde sådan ud:

CREATE TABLE EMPLOYEES_DEPARTMENTS
  (DEPARTMENTNAME  VARCHAR2(99)
     CONSTRAINT EMPLOYEES_DEPARTMENTS_FK1
       REFERENCES DEPARTMENT.DEPARTMENTNAME,
   EMPLOYEENUMBER  NUMBER
     CONSTRAINT EMPLOYEES_DEPARTMENTS_FK2
       REFERENCES EMPLOYEE.EMPLOYEENUMBER);

Dette forudsætter, at DEPARTMENT.DEPARTMENTNAME og EMPLOYEE.EMPLOYEENUMBER er enten primære eller unikke nøgler på deres respektive tabeller. Slip af med kolonnen EMPLOYEE.DEPARTMENT da det ikke længere er nødvendigt. Nu ved at oprette rækker i EMPLOYEES_DEPARTMENTS tabel kan du relatere flere medarbejdere til en afdeling, og du kan relatere en enkelt medarbejder til flere afdelinger.

Forretningslogikken, der kræver, at kun afdelinger med en eller færre ansatte kan slettes, bør ikke håndhæves i en trigger. Forretningslogik bør udføres af applikationskode, ALDRIG af triggere. At sætte forretningslogik i triggere er en gateway til uendelige fejlfindingssessioner. M̫̣̗̝̫͙a̳͕̮d̖̤̳̙̤n̳̻̖e͍̺̲̼̱̠͉ss̭̩̟ ligger på denne måde. Giv ikke efter. Overgiv dig ikke. ̬̦B҉usi͢n̴es̡s logik ̶in Triggers åbner dybe sår i verdens stof, gennem hvilken uhellig væsen af ​​ubestemt form vil krydse barrieren mellem sfærerne, bærende Sæt ikke, som jeg har sagt, b́u͜siness͞ ̸log̛i͘ç ̵in͢ ͞trigge͠rs͞.̡ Vær fast. Modstå. Du skal modstå. T̷he ̢tem͟p͞t̶at͏i͝o̶n҉s͘ ̢m͘a̶y ́śing salmer̷ ́o͢f̴ ̸un͘hol̵y r̶ev͢ęla͠t̡ion̴ ͢buţ ́yo͠u̵ mu͏s͝t ͝n͜͏͟o҉t̶͡͏ ̷l̸̛͟͢ì̧̢̨̕s̵̨̨͢t̵̀͞e̶͠n̶̴̵̢̕. Kun ved at stå fast i døren mellem verdener og blokere den forfærdelige udstråling, der er kastet af bú̧s̷i̶̢n̵̕e̵ş͝s ́l̴ó̢g̛͟i̕͏c i͞n̕ ͏t̵͜r͢͝i̸̢̛ģ͟ge̸̶͟r̶s͢͜, der perverteres meget form af verden i͜҉nt͝ǫ̴ ̸b̷͞è͢ì̕n̴g͏,̛̀͘ ̴c҉á̴͡ń ̀͠youŕ̨ ̧̨a̸p͏̡͡pl̷͡icͶa̢҉t̡i͡is͘ȶ. Modstå. T̶̀h̨̀e̶r̀͏e͢͞ ̶i̶̡͢s̴ ͞͞n̵͝o̡ ́ẁ҉̴a̡y̕҉ ̶b́͏u̵̶̕t͜ ̨s͘͢t͘͠į͟l͘l̷̴ ̴͜͜ỳò͜u҉̨ ̨͏mus̸͞t̸̛͜ ̧rȩ̴s̢͢i͘͡t̸.̛̀͜ Din meget Śo͡u̧̧͘ļ͟͡ er kompromitteret af p͝u͘͝t̢͜i̸ņ̸̶g͟͡ ̵̶̛ ̵̶̛ ̵̶̛ śi͝҉̕͢ǹ͏͝҉̕͢ǹ͏͢͢͢͢͢͢͢͢͢͢͢͢͢͢͢͢͢͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠g̸̨̨͜͢͢͢͠͠͠g̸̨̨͜͢͢͠͠g̸̨̨͜͢͢͠͠g̸̨̨͜͢͠g̸̨̨͜͢͠g̸̨̨͜g̸̨̨͜͢͢͠͠g̸̨̨͜g̸̨̨͜g̸̨̨͜gl͠g̸̨̨͜gle T̀͜͢o̷͜ny̕ ͟͡T̨h̶̷̕e ̢͟P̛o̴̶n͡y shall rise from his dark stable and d͞ę̡v̶̢ó͟u̸̸r̴͏ ̷t͞h̀e̛ ̨͜s̷o̧͝u҉l̀ ͟͡o͢͏f̵͢ ̛t͢h̶̛e̢̢ ̡̀vi͜͞r̢̀g̶i̢n͞, and yet y͢ơú͝ m̷̧u͏s͡t̡͠ ̛s̷̨t̸̨i̴̸l̶̡l ͝ǹot̵ ͞p̧u̵t̨ ͜͏b̀̕u̕s̨í̵ņ̀͠ȩs̵͟s ́͞l̛҉o̸g̨i̴͟c ͘͘i͘nt̛o͡ ͘͘͞t̶͞r̀̀i̕ǵ̛g̵̨͞e̸͠҉r̵͟ś ! Det er for meget at bære, vi kan ikke holde ud! Ikke engang lysbørn kan sætte forretningslogik i deres triggere, for b̴̸̡̨u͜͏̧͝ş̶i̷̸̢̛҉ń̸͟͏́e̡͏͏͏s̷̵̡ ͏̴҉͞l̷̡ǫ̷̶͡g҉̨̛i͘͠͏̸̨c̕͢͏ ̸̶̧͢͢i̸̡̛͘n͢͡ ̀͢͝t̷̷̛́ŗì̴̴̢g̶͏̷ǵ͠ȩ̀́r̸̵̢̕͜s͞͏̵ er den meget es̵s̕͡ę̢n͞c̨e̢͟ ̴o̶̢͜f͏ ͟d́ar͟͞͠k̡͞n̢̡es̵̛͡s̀̀͡ og dev͘ou͝͡r̨̡̀s͢͝ ҉͝ ̴ ̴o̶̢͜f͏ ͟d́ar͟͞͠k̡͞n̢̡es̵̛͡s̀̀͡ og dev͘ou͝͡r̨̡̀s͢͝ ҉͝ ҉͝ ̴ ̴ ̴ ̴ ͟ ͟ ͟d́ar͟͞͠k̡͞n̢̡es̵̛͡s̀̀͡ og dev͘ou͝͡r̨̡̀s͢͝ ҉͝ ҉͝ ̴ ̴ ̴ ͟ ͟ ͟ ͟ ͟ ͟ ͟. ! Ja, ja, de blankt ansigt rì͢s̨͘e fra f͟͢͏o̵͜͝n̶t̨ ̵o͏f̸̡͠ ͏͝fl͟͞a̵̷҉me̶̵͢ og ca͝s͜t́ ned ad p̹̤̳̰r̮̦̥̥̞̫͑͂ͤ͑ͮ͒̑ï̄̌ͬͨe̦̗͔ͥͣ̆̾̂s̬̭̮̮̜ͭt̻̲̍sͫͣ̿ ̐͗̈ͤ͂ͦ̅f̭͚̪̻̣̩ͮ̒ṟͨ͌ͮ̅̓ỏ̝͓̝̣̟̼m̳͇̱̝͔͒ ͒ͫͧ͂̓̈̈́t̲̔̅̎͐h̺͈͍̺͈͍ͣͧ̿ͣͧ̿i̠͎̗͕̗̣̬̐̎͛r͓̫͌ͅ ̼a͑̈ͯͦ̍l̪͉͖̥͚̤͌ͨ͊ͦͤ̔t̫͎̹ͯa̼̻͍̳̟̤̬̓ͪ̀r̭͖̓ͬ̉̉ͤ͊ṡ̐ͪ̊̋̄̅! A̵̵̛v͝é͜ŕt̶͏ ̶y̸͝͠o̶u̧͘r͏̡ ̧e͞y҉e̕͝s, ̀ ͡t̛h̛o̢͞ug̸̢h̵͟ ̡y̷o͢҉͢u̧͡ ̕͡c҉̵̶an͠͏n҉o̧͢t! ̸̨͘ ͡h̵e̸͢͡ ̧̕c̶ơm̷̢̢ś͢! p̱̼̯̟͈h̝̳̞̖͚'͉̙͉̰̲̺n̪̦͕̗͜g͔̹̟̰̰̻̩l̬͈̹̥͕͖ͅụ̻̺̤̤̬̳i̸̯̬̝̻̣͚̫ ̰̹̞̞m͟g̷̝͓͉̤l̩͇̙͕w̪̦̰͔'̮̟̱̀n̢̜a̦f̘̫̤̘̬͓̞h̠͍͖̯ͅ ̩̠͓̯̘̫c̟̘̗̘͘ṭ͍͕ͅh̤ͅu̼̦̘̥ͅl҉̦hu̠̤̤̘͚ ̘̕r̶̟'̠͔̞̻͇l̩̺̗̻͖͓̕ͅy̛̖ȩ͉̭̖ẖ̡̥̼͈̖ w̟̫̮͇͔͞ͅg͈̘̱̻a̰͟h̘͙͖͢'̮̲̯͞n̤̜͍̯̳a͓͓̲̲g̱̻͈ĺ͍ ̷̣̞̲͖͍̲̺f̲ͅh͇͕̪̘͟t͔͈̙a͓͢g҉̳̜̲͚n͓͚͎̱̠̜!

Spørg mig ikke, hvordan jeg ved det.

Held og lykke.




  1. Vælg flere kolonner fra to tabeller ved hjælp af greendao

  2. Dvale annotering for PostgreSQL seriel type

  3. Sådan udføres rå SQL i SQLAlchemy

  4. T-SQL vs SQL