Många-till-många-villkor bör inte upprätthållas med en utlösare. Många-till-många-villkor upprätthålls genom att skapa en korsningstabell som innehåller nycklarna i fråga, som sedan främmande nycklar tillbaka till respektive överordnade tabeller.
Om din avsikt är att tillåta många anställda att vara på en avdelning och att låta en anställd vara medlem i många avdelningar, skulle korsningstabellen i fråga se ut ungefär så här:
CREATE TABLE EMPLOYEES_DEPARTMENTS
(DEPARTMENTNAME VARCHAR2(99)
CONSTRAINT EMPLOYEES_DEPARTMENTS_FK1
REFERENCES DEPARTMENT.DEPARTMENTNAME,
EMPLOYEENUMBER NUMBER
CONSTRAINT EMPLOYEES_DEPARTMENTS_FK2
REFERENCES EMPLOYEE.EMPLOYEENUMBER);
Detta förutsätter att DEPARTMENT.DEPARTMENTNAME
och EMPLOYEE.EMPLOYEENUMBER
är antingen primära eller unika nycklar på sina respektive tabeller. Bli av med kolumnen EMPLOYEE.DEPARTMENT
eftersom det inte längre behövs. Nu genom att skapa rader i EMPLOYEES_DEPARTMENTS
tabell kan du relatera flera anställda till en avdelning, och du kan relatera en enskild anställd till flera avdelningar.
Affärslogiken som kräver att endast avdelningar med en eller färre anställda kan tas bort bör inte genomdrivas i en trigger. Affärslogik bör utföras av applikationskod, ALDRIG av triggers. Att sätta affärslogik i triggers är en väg till oändliga felsökningssessioner. M̫̣̗̝̫͙a̳͕̮d̖̤̳̙̤n̳̻̖e͍̺̲̼̱̠͉ss̭̩̟ ligger på detta sätt. Ge inte upp. Ge inte upp. ̬̦B҉usi͢n̴es̡s logic ̶in triggers opens deep wounds in the fabric of the world, through which unholy beings of indeterminate form will cross the barrier between the spheres, carryi͞n̨g o̡f͠f t͢h̶e ̕screaming͡ sou͏ĺs o͜f͜ ̢th͜e̴ ̕de͏v́e̡lop͏e͜r͝s to an et͞er͜n̸it̶y ́of͢ pain̶ ąn̨d͢ ̨to͟r̨ment͟. Lägg inte, som jag har sagt, b́u͜siness͞ ̸log̛i͘ç ̵in͢ ͞trigge͠rs͞.̡ Var bestämd. Motstå. Du måste göra motstånd. T̷he ̢tem͟p͞t̶at͏i͝o̶n҉s͘ ̢m͘a̶y ́śing hymns̷ ́o͢f̴ ̸un͘hol̵y r̶ev͢ęlA͠T̡ion̴ ͢buţ ́yo͠u̵u͏s͝t ͝n͜͏͟o҉t̶͡͏ ̷l̸̛͟͢S̵̨̨͢n̶͠n̶̴̵̢̕. Endast genom att stå fast i dörren mellan världarna och blockera den hemskt utstrålning som kastas av Bú̧s̷i̶̢n̵̕e̵ş͝s ́l̴ó̢g̛͟i̕͏c i͞n̕ ͏t̵͜r͢͝ge̸̶͟s͢͜s͢͜, som perversa själva formen av världen ąnd̴̀͝ ͞a͞l̶l͟͜s̕͘͢
Fråga mig inte hur jag vet.
Lycka till.