如何在联结表中进行编辑

2023-12-09

在连接表中进行编辑的最佳实践是什么?

Items{ItemId, Name, Price...}
Shops{ShopId, Name, Address...}
ItemsInShops{ItemId, ShopId, DeliveryDate...}

现在我一家店里有30件商品。我想编辑该列表,取消选中 10 个项目并选中 50 个新项目。

我通过以下方式执行此操作:按“ItemId”从“ItemsInShops”中删除所有行并添加新值。我认为这不是一个好的解决方案。有没有更好的方法来进行这种更新?

也许我没有用好的例子来表达问题。看看这个:

User{UserId, Username, Password...}
Roles{RoleId, Name, Description} // Admin, Member, Superuser, Junior etc
UsersInRoles{UserId,RoleId}

用户可以拥有任意数量的角色。

John > Admin, Member, Superuser

这是联结表“UserInRoles”中的三行。 如果我想更新该用户以具有以下角色:

John > Member, Junior

现在我通过以下方式对数据库进行更新: 我从“UserInRoles”表中删除所有 John 角色并添加新数据。我不知道除了删除全部并插入新之外还有什么更好的方法来进行此更新?如果由于某种原因更新失败(例如失去互联网连接)怎么办?


我不知道有没有更好的办法 进行此更新,而不是删除 全部并插入新的?

您不必首先删除所有行。

您可以仅删除不再适用的行,并仅插入新的行。或者,您可以将不再适用的值更新为适用的值。

所以要从中得到

Name    Role
--
John    Admin
John    Member
John    Superuser

to this

Name    Role
--
John    Member
John    Junior

您可以删除不再适用的内容。 。 。

delete from userinroles
where Name = 'John' 
  and (Role = 'Admin' or Role = 'Superuser');

并插入适用的内容。

insert into userinroles (Name, Role)
values ('John', 'Junior');

或者您可以使用新值更新值。

delete from userinroles
where Name = 'John' 
  and Role = 'Admin';

其次是

update userinroles
set Role = 'Junior'
where 'Name' = 'John' and Role = 'Superuser';

You said

如果由于某种原因更新失败怎么办 (失去互联网连接 例子)?

这就是交易的目的。单个 SQL 事务中的多个语句要么全部成功,要么不进行任何更改。

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

如何在联结表中进行编辑 的相关文章

随机推荐

  • Makefile 致命错误:无法创建 obj/calc.o

    我正在尝试为大学项目的简单计算器制作一个生成文件 我需要完成它 我在网上搜索了教程 最终找到了这段代码 IDIR include CC gcc CFLAGS I IDIR ODIR obj LDIR lib SDIR src LIBS lm
  • Swift 3:UITableViewRowActionStyle()“缺少参数”错误消息

    当我滑动 UITableView 单元格时 将调用以下代码 func tableView tableView UITableView editActionsForRowAt indexPath IndexPath gt UITableVie
  • 在 blueimp/jquery-file-upload 上向 mysql 插入添加更多自定义变量

    我目前正在通过 mysql 在 blueimp jquery file upload 脚本内插入标题和描述 我用了this但是 我需要添加另一个变量 该变量是当前登录用户的session ID SESSION userid 我想将其插入到我
  • MVC3 - 只有第一行链接适用于 Jquery 模态对话框

    使用 MVC3 Razor Jquery Javascript 下面的代码循环并显示带有字段和链接的表结构 每行上的链接都会触发一个 Jquery 模态对话框 该对话框将部分视图页面显示为弹出窗口 但弹出对话框仅适用于第一行 第二行及其下方
  • 云函数-获取超过10MB的文件内容

    Google Cloud Functions 配额页面 https cloud google com functions quotas表示 HTTP 响应中 HTTP 函数发送的最大数据量为 10 MB 我在 Google 存储桶中有 10
  • 用于算术运算的 BFS

    用最少的运算将数字 m 转换为 n 允许的运算为减 1 和乘 2 例如 4 和 6 答案是 2 第一个操作 1 gt 4 1 3 第二次操作 gt 3 2 6 我对特定输入 src 26 dst 5 使用 BFS 方法 这需要很长时间 难道
  • 使用 Lua 评估数学表达式

    In my 上一个问题我一直在寻找一种在 C 语言中评估复杂数学表达式的方法 大多数建议都需要实现某种类型的解析器 However 一个答案 建议使用 Lua 来计算表达式 我对这种方法很感兴趣 但我对Lua一无所知 有 Lua 经验的人可
  • 将给定坐标处的饼图添加到 cartopy 投影

    我是数据可视化的初学者 对于 cartopy 更是如此 我知道对于大多数人来说我的问题是显而易见的 我正在尝试熟悉 cartopy 并且成功地绘制了文本和点 但我无法实现饼图 我只想在特定投影上绘制饼图 但我真的很困惑 尽管有 cartop
  • 使用 PyAudio 防止 ALSA 欠载

    我编写了一个小程序 它记录麦克风的声音并将其通过网络发送并在那里播放 我正在使用 PyAudio 来完成此任务 它工作得几乎很好 但在两台计算机上我都从 ALSA 收到错误 表明发生了欠载 我在谷歌上搜索了很多相关内容 现在我知道什么是欠载
  • 如何通过网络使用命名管道?

    我正在尝试通过命名管道创建网络连接 我正在按照它所说的那样做msdn 我用函数创建管道服务器端 CreateNamedPipe pipe myNamedPipe DUPLEX FILE FLAG OVERLAPPED 0 255 BUFFE
  • 等待其他期货提出的期货

    我正在使用 Lawndart 库访问浏览器数据 并希望收集一组查询的结果 这是我认为应该起作用的 numberOfRecordsPerSection callback var map new Map db sections keys for
  • 使用 LINQ 计算与前一项的差异

    我正在尝试使用 LINQ 为图表准备数据 我无法解决的问题是如何计算 与之前的差异 我期望的结果是 ID 1 日期 现在 DiffToPrev 0 ID 1 日期 现在 1 DiffToPrev 3 ID 1 日期 现在 2 DiffToP
  • nltk 无法解释斯坦福解析器输出的语法类别 PRP$

    我想从斯坦福解析器检索的语法生成句子 但 NLTK 无法解释 PRP from nltk parse stanford import StanfordParser from nltk grammar import CFG from nltk
  • 在大端机器中对小端整数进行简单的按位操作?

    对于特定需求 我正在用四个一字节字符构建一个四字节整数 没有使用任何特别的东西 在我的小端平台上 return v1 lt lt 24 v2 lt lt 16 v3 lt lt 8 v4 我知道存储在大端机器中的整数看起来像AB BC CD
  • 单击 JPanel 绘制形状

    我有一个包含 3 个 JPanel 的 JFrame 选项 菜单 画布 在选项中有许多代表形状的 JButton 目的是单击形状的 JButton 例如矩形 然后单击画布上的任意位置 形状将绘制在那里 由于某种原因 形状并不总是被绘制 只有
  • C# 打开文件并传递参数给关联的应用程序

    我正在尝试启动为指定附加参数的扩展注册的默认应用程序 ProcessStartInfo p new ProcessStartInfo p Arguments myargument p FileName file ext Process St
  • Symfony2 - 覆盖模板包

    我想覆盖默认的 SonataAdmin 模板 我在我的命名空间 bundle resources views中创建了一个standard layout html twig 相同结构 相同文件名 相同内容 我将源模板的所有内容复制到目标模板中
  • MongoDB:有没有办法使用聚合来检测价值趋势?

    我正在尝试检测集合中值的 趋势 假设我有以下内容 created at 2014 12 01 value 1015 created at 2014 12 01 value 1015 created at 2014 12 01 value 1
  • 处理 IE 中的跨帧按键

    我一直在努力处理onkeydown通过 JavaScript 跨多个框架的事件 不 不幸的是我无法摆脱框架 请参阅我之前的问题here 我正在另一个框架中获取文档的句柄 并将其设置为onkeydown处理程序等于我的函数 没有抛出错误 但是
  • 如何在联结表中进行编辑

    在连接表中进行编辑的最佳实践是什么 Items ItemId Name Price Shops ShopId Name Address ItemsInShops ItemId ShopId DeliveryDate 现在我一家店里有30件商