gpt4 book ai didi

sql - 需要 SQL 方面的专家建议

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:27:21 24 4
gpt4 key购买 nike

我有一个场景,其中表 A 引用了表 B,表 B 引用了表 C 列......等等。

要在我的项目中实现更新任务,我应该在两阶段逻辑中实现它即首先删除该行,然后再次添加最新的行。

但不幸的是,当我尝试删除表 A 中的一行时,它有一个引用,而这个引用又引用了其他表等等。因此,我的删除和添加逻辑并不总是以正确的方式工作。即使它被删除并再次添加,它被添加的顺序是最后的,即作为一个新记录。因此,我将按照与旧版本相同的顺序丢失所有较早的引用资料。

因此我想从表中删除一行而不影响引用,即暂时它应该允许忽略引用,一旦我再次添加它即更新记录然后我需要重新强制/启用引用。

这样可以吗?还是有任何其他逻辑以类似的方式起作用或取代了初衷?任何人都可以就此提供您的专业建议吗?

Windows 服务包的一般逻辑是如何工作的?任何人都可以详细说明吗?或分享一些相关的信息或文档或博客?

非常感谢。问候,希亚姆

最佳答案

你想做的是一种不好的做法,我会重新考虑你的设计。它不允许您删除父记录,因为有子记录。这就是数据库 ii 应该做的,并试图规避它是 100% 的坏数据保证。

如果您要完成的是将子记录移动到新的父记录,则可以这样做,但您首先要添加新记录,然后再进行更新。最好有一些字段能够定义它曾经关联的旧记录或用于进行许多更改的映射表。然后您需要为每个子表运行更新。这种事情应该是一次性的改变,而不是经常练习。它当然不应该在应用程序中发生,并且只能由合格的数据库开发人员完成。

如果您要完成的是停用父级,使其不再用于某些目的(例如创建新订单)并留下详细信息以供报告(不想丢失旧订单的财务信息) ),那么你应该在表上放置一个事件标志,并用它来过滤记录。通常这意味着创建一个只有事件记录的 View 并将代码指向 View 而不是直接指向表。

关于sql - 需要 SQL 方面的专家建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23014056/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com