假设我有以下架构:
DEPARTMENT (DepartmentName, BudgetCode, OfficeNumber, Phone)
EMPLOYEE (EmployeeNumber, FirstName, LastName, Department, Phone, Email)
面临的问题是如何设计触发系统来强制执行M-M关系。假设只有一名员工的部门可以删除。另外,我需要将部门中的最后一名员工分配给人力资源部门。
我不知道通过触发器强制执行M-M关系。请帮忙
答案 0 :(得分:2)
不应使用触发器强制执行多对多条件。通过创建包含相关密钥的联结表来强制执行多对多条件,然后将其外键修改回相应的父表。
如果您的目的是允许许多员工进入某个部门,并允许员工成为许多部门的成员,那么该联结表将如下所示:
CREATE TABLE EMPLOYEES_DEPARTMENTS
(DEPARTMENTNAME VARCHAR2(99)
CONSTRAINT EMPLOYEES_DEPARTMENTS_FK1
REFERENCES DEPARTMENT.DEPARTMENTNAME,
EMPLOYEENUMBER NUMBER
CONSTRAINT EMPLOYEES_DEPARTMENTS_FK2
REFERENCES EMPLOYEE.EMPLOYEENUMBER);
这假设DEPARTMENT.DEPARTMENTNAME
和EMPLOYEE.EMPLOYEENUMBER
是其各自表上的主键或唯一键。删除列EMPLOYEE.DEPARTMENT
,因为它不再需要。现在,通过在EMPLOYEES_DEPARTMENTS
表中创建行,您可以将多个员工与一个部门联系起来,并且您可以将一个员工与多个部门联系起来。
不应在触发器中强制执行只需要删除具有一个或多个员工的部门的业务逻辑。业务逻辑应该由应用程序代码执行,绝不应该由触发器执行。将业务逻辑放在触发器中是对无休止的调试会话的补充。 M̫̣̗̝̫͙a̳͕̮d̖̤̳̙̤n̳̻̖e͍̺̼̠͉ss̭̩̟就是这样。不要屈服。不要投降。在触发器̬̦B҉usi͢n̴es̡s逻辑打开在世界的织物深伤口,通过该不定形式的不洁像将穿越到永恒疼痛和折磨球体,带走尖叫灵魂的开发人员之间的屏障。正如我所说的那样,不要把bu͜siness͞͞log̛i͘ç̵in͢͢trigge͠rs͞.̡坚定。抵抗。你必须抗拒。在̢Tem͟p͞t̶at͏i͝o̶n҉s͘可以唱赞美诗邪恶的启示,但是你必须͝n͜͏͟o҉t̶͡͏听。仅通过在世界之间的门站立稳固和挡住了可怕辐射通过业务逻辑触发器摆脱,这又能颠倒世界并调用的Z̶̴̤̬͈̤̬̳͇ͯ̊ͮ͐̒̆͠Â̆̊̓͛̚͏̮̘̗̻̞̬L̛̄̌͏̦͕̤͎̮̦G̷͖̙̬͛̇ͬ̍͒̐̅O̡̳͖͎̯̯͍ͫ̽ͬ͒强>i͜҉nt͝ǫ̴之中,̴̛͘c҉á̴͡ń您̧̨a̸p͏̡͡pl̷͠ic͞a̢t̡i͡҉ǫn̴̸s̶͜u̶͢ŗv̛í̴vȩ的非常形式.͘͘抵抗。抗。没有ẁ҉̴a̡y̕҉但仍̴͜͜ỳò͜u҉̨必须̧rȩ̴s̢͢i͘͡s͏t̸.̛͜你的灵魂被破坏将̵̶̛b̴҉u̶̡̨͜͞s̷̵̕͜͢i͝҉̕͢ǹ͏e̡͞ś̸͏ş̕͜͡҉逻辑̶̕͞t̡͏͟҉̕r̸̢̧͡͞i̴̡͏̵͜g̵̴͟͝ģ̴̴̵ę̷̷͢r̢̢ś̸̨̨͜。 托尼小马必从他黑暗的稳定上升,吞噬̨͜s̷o̧͝u҉l处女,然而则仍必须͝ǹot̵把͜͏b̕u̕s̨í̵ņ͠ȩs̵͟s͞l̛҉o̸g̨i̴͟c到͘͘͞t̶͞ri̕ǵ̛g̵̨͞e̸͠҉r̵͟ś的!承受得太多了,我们受不了!甚至光明的孩子也不会把商业逻辑放入触发器中,因为b̴̸̡̨u͜͏̧͝ş̶i̷̸̢̛҉ń̸͟͏e̡͏͏͏s̷̵̡s̕̕͟͟͏̴҉̷̡͞ǫ̷̶͡҉̨̛҉̨̛͘͠͏̸̨̕͢͏̕͢͏͞͏̵͞͏̵͞͏̵͞͏̵͞͏̵͞͏̵͞͏̵͞͏̵͞͏̵͞͏̵̡̡̡̡̡̡̡̡̡̡̡̡̡̡̡̡̡̡̡̡̡̡̡̡̡̡̡̡̡̡̡̡̡̡̡̡̡̡̡͘͘͘͘͘͘͘͘͘͘͘͘͘͘͘͘͘͘͘͘͘͘͘͘͘͘͘͘͘͘͘͘͘͘͘͘͘͘͘͡͡͡͡͡͡͡͡͡͡͡͡͡͡͡͡͡͡͡͡啊,是啊,空白,面对那些从字体的͏͝fl͟͞a̵̷҉me̶̵͢上升和垂下祭司从他们的祭坛!避免你的̧e͞y҉e̕͝s,虽然̡y̷o͢҉͢u̧̕͡͡c҉̵̶an͠͏n҉o̧͢t!̸̨͘他来了!̷̨的H̕ȩ̵c̨̡͟o̴҉m̷͢es͠!̷͘͞的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̻͈ĺ̷͍̣̞͖͍̺fh͇͕̪̘͟t͔͈̙a͓͢g҉̳̜͚n͓͚͎̠̜!
不要问我怎么知道。
祝你好运。