php – 何时使用存储过程和触发器与应用层
我有一个两难的境地,我希望你能有一些专家意见.
我有一个名为CARDS的表,其中包含列STATUS.如果记录的状态从“下载”变为“发布”,我必须将记录引用插入另一个名为CARD_ASSIGNMENTS的表中.此外,记录需要多次添加到CARD_ASSIGNMENTS中,因为SCANNERS中有活动记录. 换句话说,如果有两个主动扫描仪,我将在CARD_ASSIGNMENTS中得到两条记录,如下所示: ID CARD_ID SCANNER_ID STATUS_ID 1 1 1 4 2 1 2 4 我的困境是我不太确定执行上述操作的最有效方法是什么.我考虑过以下选项: >从PHP – 执行一次UPDATE查询,然后执行INSERT查询. PS.我的数据库的简化版本可在MySQL Fiddle上获得 谢谢, 解决方法
有趣的问题.
我将为您提供有关如何解决问题的线索. 所以,你必须首先定义三件事: >预期的功能 在这里,我将详细介绍这些要点. 所以,第一点是你必须定义你的功能.通过这样做,您将能够判断添加卡是否总是意味着,在您的信息系统的所有可能的范例(对不起迂腐的词,我找不到更合适的一个)中,这张卡必须存在于根据您提供的规格,其他表格.此1-1功能链接必须为TRUE或FALSE.这非常重要. 然后是关于访问策略的第二点.您必须知道允许的访问系统是通过使用您的应用程序层还是可以开发自己的(SAAS样式)来实现的.如果是这样,你的php层将是无用的,并且存储过程是一个很好的选择,因为每个技术和业务层都将通过它是或是. 最后要知道的是,有一天你是否可能要升级你的php层.在大多数情况下,答案是肯定的.如果是这样,您可能必须修改包含您正在讨论的sql逻辑的部分.然后,将所有内容都存储到存储过程中并将其硬编码存储到php中肯定会节省您的时间,并提高稳定性. 左脑右脑,我将告诉你我个人的意见.我真的很喜欢使用存储过程但不使用任何触发器.如果环境允许,我会寻找一个底层批处理,调用一组已定义的存储过程,将活动集中在在线范围之外. 优点如下: >由于减少了操作次数,因此无法或更少地中断在线工作流程的风险 很长的帖子,但这很有趣,我真的想分享这些想法. 干杯! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |