强制执行 M-M 关系的触发器

2024-01-08

假设我有以下架构:

DEPARTMENT (DepartmentName, BudgetCode, OfficeNumber, Phone)
EMPLOYEE (EmployeeNumber, FirstName, LastName, Department, Phone, Email)

我面临的问题是如何设计一个触发器系统来强制M-M关系。假设可以删除只有一名员工的部门。另外,我需要将部门中的最后一名员工分配给人力资源部。

我不知道通过触发器强制执行 M-M 关系。请帮忙


不应使用触发器强制执行多对多条件。通过创建包含相关键的联结表来强制执行多对多条件,然后将这些键通过外键返回到相应的父表。

如果您的目的是允许多个员工在一个部门中,并允许一名员工成为多个部门的成员,则所讨论的联结表将类似于:

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 and EMPLOYEE.EMPLOYEENUMBER是各自表上的主键或唯一键。摆脱列EMPLOYEE.DEPARTMENT因为不再需要它了。现在通过在EMPLOYEES_DEPARTMENTS您可以将多个员工与一个部门关联起来,也可以将单个员工与多个部门关联起来。

不应在触发器中强制执行要求只能删除拥有一名或更少员工的部门的业务逻辑。业务逻辑应该由应用程序代码执行,而不是由触发器执行。将业务逻辑放入触发器中是无休止的调试会话的门户。 M̫̣̗̝̫͙a̳͕̮d̖̤̳̙̤n̳̻̖e͍̺̲̼̱̠͉ss̭̩̟就是这样。不要屈服。不要投降。 ̬̦B̦usi͢n̴es̡的触发器逻辑在世界的结构中打开深深的伤口,通过这些伤口,不确定形式的邪恶存在将穿越球体之间的屏障,携带i͞n̨g o̡f͠f t͢h̶e ̕尖叫͡ 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͟。正如我所说,不要将 b́u͜siness͞ ̸log̛i͘ç ̵in͢ ͞trigge͠rs͞.̡ 坚定。反抗,你必须反抗。 T̷he ̢Tem͟p͞t̶at͏i͝o̶nЉs͘ ̢m͘a̶y ́śing 赞美诗̷ ́o͢f̴ ̸un͘hol̵y r̶ev͢ęla͠t̡ion̴ ͢buţ ́yo͠u̵ mu͏s͝t ͝n͜͏͟哦t̶͡͏̷l̸̛͟͢ì̧̢̨̕s̵̨̨͢t̵̀͞e̶͠n̶̴̵̢̕。只有坚定地站在世界之间的门上,挡住bú̧s̷i̶̢n̵̕e̵ş͝s ́l̴ó̢g̛͟i̕͏c i͞n̕ ͏t̵͜r͢͝i̸̢̛ģ͟ge̸̶͟r̶s͢͜发出的狰狞光芒,扭曲了它的形态。世界 ąnd̴̀͝ ç͞a̧͞l̶l͟͜s̕͘͢Z̶̴̤̬͈̤̬̲̳͇ͯ̊ͮ͐̒̆͂̆́̊̓͛́̚͠͏̮̘̗̻̞̬̱ͅL̛̄̌͏̦͕̤͎̮̦G̷͖͛̇ͬ̍͒̐̅ ̙̬O̡̳͖͎̯̯͍ͫ̽ͬ͒͂̀i͜Љnt͝ǫ̴ ̸b̷͞è͢ì̕n̴g͏,̛̀͘ ̴chāá̴͡ń ̀͠youŕ̨ ̧̨a̸p͏̡͡pl̷͠ic͞a̢t̡i͡Љǫn̴ ̸s̶͜u̶ŗv̴̛v ́ş.͘͘ 抵抗。抵抗。 T̶̀h̨̀e̶r̀͏e͢͞ ̶i̶̡͢s̴ ͞͞n̵͝o̡ ́ẁ̴̉a̡y̡̕ ̶b́͏u̵̶̕t͜ ̨s͘͢t͘͠į͟l͘l̷̴ ̴͜͜ᳳo ̀͜uЉ̨ ̨͏mus̸͞t̸̛͜ ̧rş̴s̢͢i͘͡s͏t̸.̛̀͜ 你的 śo͡u̧̧͘ļ͟͡ 受到了 p͝u͘͝t̢͜t͠i̸ņ̸̶g͟͡ ̵̶̛b̴Љu 的损害̶̡̨͜͞s̷̵̕͜͢i͝Љ̕͢ǹ͏e̡͞ś̸͏ş̕͜͡Љ ̴̨ĺ̵̡͟͜o̶̕g͠i͢͠c̕͝ ̕͞i̧͟͡n̡͘͟ ̶̕͞t̡̏͟Љ r̸̢̧͡͞i̴̡͏̵͜g̵̴͟͝ģ̴̴̵ę̷̷͢r̢̢ś̸̨̨͜。T̀͜͢o̷͜ny̕ ͟͡T̨h̶̷̕e ̢͟P̛o̴̶n͡y应从他的黑暗稳定和d͞ę̡v̶̢u͟u̸̸u̸̸t͞h̀e̛e̛s̷o̧͝u҉l̀l̀l̀l̀l̀e͢͏o͢͏t͢h̶̛e̛h̶̛e̢̢e̢̢e̢̢e̢̢vi͜͞vi͜͞r̢̀g̶i̢n͞中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̵͟ś!这实在是太难以承受了,我们无法忍受!即使是光明之子也可能不会将业务逻辑放入触发器中,因为 b̴̸̡̨u͜͏̧͝ş̶ỉ̷̸̢̛ń̸͟͏́e̡͏͏͏s̷̵̡s̕͟ ͏̴̴̉͞l̷̡ǫ̷̶͡g̨̛i͘͠͏̸̨c̕ ͢͏ ̸̶̧͢͢i̸̡̛͘n͢͡ ̀͢͝t̷̷̛́ŗì̴̴̢g̶͏̷ǵ͠ş̀́r̸̵̢̕͜s͞͏̵就是es̵s̕͡ę̢n͞c̨e̴̢̟͞o̶̵ ͜f͏͟d́ar͟͞͠k̡͞n̢̡es̵̛͡s̀̀͡和dev͘ou͝͡r̨̡̀s͢͝Љ͝th̴e̡͘!是啊,是啊,那些面无表情的 rì͢s̨͘e 来自 f͟͢͏o̵͜͝n̶t̨ ̵o͏f̸̡͠ ͏͝fl͟͞a̵̷Љme̶̵͢ 和 ca͝s͜t́ 下 p̹̤̳̰r͑͂ ̮̦̥̥̞̫ͤ͑ͮ͒̑ï̄̌ͬͨe̦̗͔ͥͣ̆̾̂s̬̭̮̮̜ͭt̻̲̍sͫͣ̿̐͗̈ͤ͂ͦ̅f̭͚̪̻̣̩ͮ̒ṟ͓Ṍ̮̮̜̅ͭt̻̲̍sͫͣ̿̐͗̈ͤ͂ͦ̅f̭͚̪̻̣̩ͮ̒ṟ͓ጌ̮̟ͻ͝ ̳͇̱̝͔͒ ͒ͫͧ͂̓̈̈́t̲̔̅̎͐h̺͈͍ͣͧ̿ē̪̼̪̻͉̪̙̪̽̎̉i̠͎̗͕̗̣̬̐̎͛r͓̫͌ͅ ̼a̦͑̈ͯ̍ͦͨ͊ ͉͖̥͚̤t̫͎̹ͯa̼̻͍̳̟̤̬̓ͪ̀r̭͖̓ͬ̉̉ͤ͊ṡ̐ͪ̊̋̄̅! A̵̵̛v͝é͜ŕt̶͏ ̶y̸͝͠o̶u̧͘r͏̡ ̧e͞yЉe̕͝s,̀͡t̛h̛o̢͞ug̸̢h̵͟ ̡y̷o͢Љ͢u̧͡ ̕͡ch̵̶̉an͠͏n Љo̧͢t!̸̨͘ ͡H̵e̸͢͡ ̧̕c̶ơm̷̢̢e̶͞ś͢!̨́ ̷H̕ş ̵c̨̡͟ỏ̴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̱̻͈ĺ͍ ̷̣̞̲͖͍̲̺f̲ͅh͇͕̪̘͟t͔͈̙a͓͢gЉ̳̜̲͚n͓͚͎̱̠̜!

别问我怎么知道的。

祝你好运。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

强制执行 M-M 关系的触发器 的相关文章

随机推荐

  • Seaborn FacetGrid 用户定义绘图函数

    在 Seaborn 中 您可以使用FacetGrid设置要在其上绘图的数据感知网格 然后您可以使用map or map dataframe绘制这些网格的方法 我无法正确指定与以下命令一起使用的用户定义绘图函数map or map dataf
  • 创建像 Helper.BeginForm() 这样的 MVC3 Razor Helper

    我想创建一个助手 我可以像 Helper BeginForm 一样在括号之间添加内容 我不介意为我的助手创建一个开始 结束 但这样做非常简单且容易 基本上我想做的就是将内容包装在这些标签之间 以便它们呈现已经格式化 就像是 using Ht
  • “dart:html”和“dart:dom”包有什么区别?

    我从一些 Dart 示例开始 然后我想查询 DOMdocument query someId 如上所述here http www dartlang org articles improving the dom 但是文档中好像没有查询方法 另
  • Spring Boot 请求头返回 null 值

    我有一个 Spring Boot 项目 其中有一些 Rest API 我有两个名为request date and tenant分别 我试图在拦截器中读取这些标头的值 但它仅读取该值tenant并返回 nullrequest date 重要
  • ReferenceError:事件未在 mozilla firefox 中定义[重复]

    这个问题在这里已经有答案了 此代码不适用于 Firefox V21 0 但适用于 IE V9 V10 和 Chrome V 27 0 1453 110 m 方法校准
  • 使用 .NET MVC 5 实现基于角色的授权

    我想在我正在构建的 Web 应用程序中实现基于角色的授权 我想象的方法是在我的数据库中创建 3 个表 如下所示 1 Roles 2 UserRoles many to many table 3 Users 之后 每个用户都会被分配一个角色
  • C# File.Copy 源文件夹和目标文件夹需要不同的用户权限

    我有一个应用程序 可以将本地硬盘驱动器上任何位置的文件复制到网络共享上的目录 网络目录只能由特殊域帐户访问 我通常通过使用模仿者级 https stackoverflow com questions 9909784 impersonatin
  • 为什么 eventsMatchingPredicate 返回 nil?

    这是我的代码 NSString calID NSUserDefaults standardUserDefaults objectForKey calendarIdentifier EKCalendar cal eventStore cale
  • 部署失败错误:Mono.AndroidTools.InstallFailedException:失败 [INSTALL_FAILED_UPDATE_INCOMPATIBLE]

    我的应用程序没有错误 但是当我尝试调试应用程序时 部署失败 没有错误 并给出以下输出 部署失败 1 gt Mono AndroidTools InstallFailedException 失败 INSTALL FAILED UPDATE I
  • 如何用新创建的节点替换TreeView选定的节点

    我有一个填充的treeView 其中包含我创建的节点 有几个节点类 全部继承自treeNode 当我编辑节点 使用 GUI 对话框 时 它可能会更改为不同的类 因此我在该过程中创建一个新节点 并尝试用我的新节点替换所选节点 但这不起作用 该
  • 在 bash 中声明数组时出现错误“语法错误:”(“意外”

    同样的问题this OP https stackoverflow com questions 15209607 array declaration of shellscript doesnot work in scheduled cron
  • 如何使用 selenium xpath 等待页面中的两个元素之一

    我有两个元素可以等待 我想要wait直到它们中的任何一个出现在页面上 我正在尝试使用xpath定位器 但它不起作用 By xpath contains id idNumber1 or contains id idNumber2 这是可以实现
  • 字符常量的 C 编码

    我的程序员的直觉会说 c 中的字符常量 例如 x 是使用编译它的机器的机器字符集进行编码的 然而 以下摘录自 C 编程语言 ANSI C 版 字符常量是用单引号括起来的一个或多个字符的序列 如 x 只有一个字符的字符常量的值是执行时机器字符
  • Firefox 忽略 CSS font-weight 属性

    不确定我是否使用正确的流程来显示具有 3 种粗细的字体 正常 粗体 和 较亮 但是 它似乎适用于大多数浏览器 除了 Firefox Firefox 似乎正在使用 font weight lighter 作为默认值 我所追求的就是字体在 Ch
  • 在 CDN 上托管 Javascript/CSS 文件类似于 Google 托管 jQuery [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想知道是否有任何主机 或者我是否可以在 Google 上托管我的文件 JS 和 CSS 以便它们被缓
  • 层命中测试仅在触摸层的下半部分时返回层

    我在图层支持的视图上有一个子图层 子图层的内容设置为图像引用并且是 25x25 矩形 当调用 TouchBegan 和 TouchMoved 方法时 我在超级层上执行命中测试 事实上 如果子层被触摸 命中测试方法确实会返回子层 但前提是图像
  • 终止管道中的上一个命令

    我正在运行这样的模拟 waf run scratch myfile awk f filter awk 我怎样才能杀死waf命令尽快filter awk检测到发生了某些事情 例如 在读取特定行之后 我无法改变waf or myfile 我只能
  • PHP 和 X.509 身份验证 - 检查证书颁发者

    我试图在我的网站上设置一个特定页面 只有经过 X 509 身份验证的人才能访问 问题是 我希望所有拥有由某个机构颁发的匹配证书的客户都可以使用它specific中间CA 我打算在一个自生成的根CA下有几个中间CA 但只有一个特定中间CA颁发
  • WCF 跟踪上未找到配置评估上下文警告

    我有一组托管在 NET 4 应用程序上的 WCF 服务 我手动创建 ServiceHost 类并开始侦听 TCP 端口 一切都按预期工作 但在服务器端的 WCF 跟踪中 我收到以下警告 未找到配置评估上下文 XML 跟踪如下
  • 强制执行 M-M 关系的触发器

    假设我有以下架构 DEPARTMENT DepartmentName BudgetCode OfficeNumber Phone EMPLOYEE EmployeeNumber FirstName LastName Department P