更新外键值

2023-12-11

我有一个数据库应用程序,其中的组建模如下:

TABLE Group
(
  group_id integer primary key,
  group_owner_id integer
)

TABLE GroupItem
(
  item_id integer primary key,
  group_id integer,
  group_owner_id integer,
  Foreign Key (group_id, group_owner_id) references Group(group_id, group_owner_id)
)

我们设置了多字段外键,包括group_owner_id因为我们要确保GroupItem不能有与Group由于其他原因(我认为我不需要详细说明这一点),无法从 group_owner_id 中删除GroupItem表,所以仅仅删除它不是一个选择。

我的大问题是如果我想更新group_owner_id对于整个组,我正在编写这样的代码(伪代码):

...
BeginTransaction();
BreakForeignKeys(group_items);
SetOwnerId(group, new_owner_id);
SaveGroup(group);
SetOwnerId(group_items, new_owner_id);
SetForeignKeys(group_items, group);
SaveGroupItems(group_items);
CommitTransaction()
...

有办法解决这个问题吗?看起来有点笨拙。希望我已经发布了足够的细节。

Thanks.


SQL Server 不支持 UPDATE CASCADE 吗? :-

Foreign Key (group_id, group_owner_id)
 references Group(group_id, group_owner_id)
 ON UPDATE CASCADE

然后,您只需更新 Group 表的 group_owner_id 即可。

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

更新外键值 的相关文章

随机推荐

  • 无法从jupyterhub/jupyter笔记本调用tensorflow gpu,为什么?

    好吧 我认为八个小时足够我自己解决这个问题 所以我只想问大家 我在 jupyterhub 和 Jupyter Notebook 之外的名为 tensorflow 的虚拟环境中运行 tensorflow gpu 1 1 0 运行得很好 也就是
  • Scrapy CrawlSpider 基于 start_urls 的动态规则?

    我正在编写一个 Scrapy 抓取工具 它使用 CrawlSpider 来抓取网站 检查其内部链接 并抓取任何外部链接 域与原始域不同的链接 的内容 我设法用两条规则来做到这一点 但它们是基于正在爬网的网站的域 如果我想在多个网站上运行它
  • 当每一侧有不同数量的项目时,将弹性项目置于一行中居中

    如何实现图片上绘制的布局 例如 左侧 3 项 一项居中 两项在右侧 ul 是橙色 黑框是项目 ul display flex width 100 ul li Item 1 li li Item 2 li li Item 3 li li It
  • scala 集合:映射列表并携带一些状态?

    我似乎一直遇到这个问题 我想修改列表中的一些元素 但我需要在这样做时保留一些状态 因此地图不起作用 这是一个例子 scala gt val l1 List a b c d e f b c e b a l1 List String List
  • Arm 板上有两个以上的 SPI 设备,但只支持两个?

    我们其中一块板上的 Arm 处理器有一个 spi 端口 带有两条片选线 该处理器的数据表中提到它最多可以控制两个 spi 设备 是否可以使用 GPIO 作为附加 spi 设备的从选择 如何修改现有的库 设备驱动程序以支持此更改 到目前为止
  • Linux C++ 尝试使用绝对路径加载一个特定库,而所有其他库则使用相对路径链接

    我有以下问题 我正在尝试创建程序的可移植版本 因此我将 rpath 设置为 因此所有库都使用相对文件路径链接 这确实适用于除一个库之外的所有库 由于某种原因 只有当一个特定库存在于编译时链接的同一位置时 该程序才能工作 这是我自己写的 它的
  • 在 Flex Line 图表中显示数据点

    我有一个弹性折线图 有没有办法改变每个点的渲染并让它们始终显示 而不是必须将鼠标悬停在线条的某些部分上才能查看数据点的默认行为 几乎就像连接点类型视图 Try this
  • 使用 CGSizeMake 和 CGSize 有什么区别?这个比那个好吗?

    CGSize width 360 height 480 and CGSizeMake 360 480 似乎有同样的效果 一个比另一个更受青睐吗 有什么不同 The CGSize构造函数是 Swift 的扩展CGSize extension
  • Visual Studio 2022 发布窗口未检测身份验证状态

    我已经登录到 VS2022 因此也登录到 Azure 但在尝试发布应用程序时 我看到以下屏幕 从右上角可以看出我已经登录了 那么我什么时候得到这个 我什至尝试了这个建议link 我退出并删除了 localappdata IdentitySe
  • 可滚动的 JFree 域轴和自定义标记标签

    我有这段代码来绘制图表 效果很好 我这里需要两件事 在域轴 x 上我希望能够滚动 在标记上我看到一条粗粗的线 我希望能够看到该标记的一些可读文本 For now I see this output 缩放后我看到了这个 同样在域轴上我有毫秒值
  • 在 JavaScript 中重试 Promise 的通用解决方案

    我尝试给出一个重试承诺的通用解决方案 以下是我的方式 出现 未捕获 承诺 的错误 我该如何解决这个问题 function tryAtMost maxRetries promise let tries maxRetries return ne
  • SQL Server 2005 - 如何将图像数据类型转换为字符格式

    背景 我是一名软件测试人员 使用测试用例管理数据库 该数据库使用已弃用的图像数据类型存储数据 我对 SQL Server 比较缺乏经验 问题 具有富文本格式的字符数据存储为图像数据类型 目前 以人类可读格式查看这些数据的唯一方法是通过测试用
  • 在 PHP 中寻找加载依赖项/服务/配置的优雅方法?

    我正在构建一个 MVC PHP 框架 我想知道哪些是在我的类中加载所需内容的最佳实践 无论是其他类还是普通配置 到目前为止 我已经使用了单例 注册表以及最近的依赖注入容器 虽然许多人声称 DI 是可行的方法 但在我看来 它只是将组件之间的耦
  • ASP.NET 中的 OpenIDSelector 问题

    我正在尝试使用 asp net c 在我的网站中使用 OpenID 我正在使用 asp net v4 开发 asp net 表单网站 我遇到的问题是我的工具箱中的 openidselector 控件是由 dotnetopenauth dll
  • dbms_output.put() 的缓冲方式与 dbms_output.put_line() 不同吗?

    我使用 Aqua Data Studio 通过分散输出语句来调试存储过程 我在包中有一条违反完整性约束的删除语句 DELETE FROM x WHERE x ID an x with children 正如预期的那样 我的过程在该行失败并出
  • 为什么类的静态方法可以继承,而接口的静态方法不能继承?

    我知道在Java中静态方法就像实例方法一样被继承 不同之处在于当它们被重新声明时 父实现被隐藏而不是被覆盖 好吧 这是有道理的 然而 Java 教程注意到 接口中的静态方法永远不会被继承 为什么 常规方法和接口静态方法有什么区别 让我澄清一
  • php通过序列号进行页面导航

    任何人都可以帮助这个 php 页面导航脚本打开计算正常序列号吗 在这个脚本中有一个名为 page id 的变量 我希望这个变量按0 1 2 3 4 5等顺序存储真实的页面链接
  • 有没有办法在 EDM Designer 2010 中设置自定义复数形式?

    我正在使用 VS 2010 并且我有一个实体 Person 复数服务将其复数变为 People 我希望它是 Persons 有没有可以管理复数库的地方 不在 Visual Studio 中 no 与此同时 您可以下降到 API 级别并创建您
  • 将匿名/动态函数设置为菜单

    我想在 Google Sheets 插件中为动态菜单设置动态功能 我正在使用以下代码 function onOpen e var menu SpreadsheetApp getUi createAddonMenu for var i 0 i
  • 更新外键值

    我有一个数据库应用程序 其中的组建模如下 TABLE Group group id integer primary key group owner id integer TABLE GroupItem item id integer pri