如何在联结表中进行编辑

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(使用前将#替换为@)

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

  • 有没有办法只安装mysql客户端(Linux)? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有没有不需要安装整个mysql db安装包的Linux mysql命令行工具 我想做的是从服务器 1 应用程序服务器 执行将在服务器 2
  • 如何告诉node.js mysql没有在默认端口上运行?

    我遇到了与此人类似的问题 连接 ECONNREFUSED 节点 js sql https stackoverflow com questions 8825342 connect econnrefused node js sql 我正在尝试将
  • Slick 中的 Scala 枚举(案例对象),良好实践

    假设我有一个代表一组几个有效状态的特征 将对象存储在数据库中是一个好习惯吗 存储 Int 并使用隐式函数 MappedColumnType base Int DoorState 将它们映射到 DoorState 会更好吗 trait Doo
  • 使用 LIMIT/OFFSET 运行查询并获取总行数

    出于分页目的 我需要使用以下命令运行查询LIMIT and OFFSET条款 但我还需要计算该查询将返回的行数 而不需要LIMIT and OFFSET条款 我想运行 SELECT FROM table WHERE whatever ORD
  • VB.NET 和 MySql UPDATE 查询

    我的代码在这里没有错误 至少在我调试它时没有错误 我使用VS 2010 但我希望发生的是 当我单击添加按钮时 文本框 txtQty 中的数字将添加到当前保存在 数量 列中的数字中 例如 txtQty 100 该列上的当前值为 200 我想将
  • 使用 PHP 显示 Mysql 中的图像

    这就是我的数据库中的表的样子 我正在尝试显示我存储的图像 它是 mimetype longblob 当我运行代码时 它会给我一个带有 的小框 没有错误 只是那个框 有谁知道错误是什么以及如何修复它 Display Index Display
  • UseRowNumberForPaging 不是有效的

    我在用着 Microsoft EntityFrameworkCore SqlServer 1 0 0 rc2 final with SQL 2008根据谷歌上找到的一些结果 我只需添加选项 UseRowNmberForPaging 当创建一
  • 关系代数 - 笛卡尔积与自然连接?

    我正在准备考试 但未能找到一个可靠的标准来确定笛卡尔积是否x要使用或者如果自然连接 X 是要使用的 我想出了一个粗略的指南 如果您需要投影与要连接的表中的属性同名的属性 则必须使用x并说明要投影的表名称 tableA colname1 ta
  • MySql 复合索引

    我们使用 MySql 作为我们的数据库 以下查询在 mysql 表 大约 2500 万条记录 上运行 我在这里粘贴了两个查询 查询运行得太慢 我想知道更好的复合索引是否可以改善这种情况 你知道最好的综合指数是什么吗 并建议我这些查询是否需要
  • Laravel 使用数据库自​​动完成文本字段

    我正在尝试制作如下所示的自动完成表单 但该表单没有显示建议 因为我的数据库查询没问题 形成科尔 控制器方法代码 Routes 当我搜索链接时 我得到如下查询结果 显示结果 id 1 value 苏拉夫霍森 id 2 value 苏拉夫霍森
  • PLSQL 中的时区转换

    我需要将系统日期和时间转换为特定时区 例如东部时间 我无法假设我当前的时区 如何在plsql中转换它 请帮我 假设你有一个TIMESTAMP WITH TIME ZONE 例如systimestamp 您可以使用AT TIME ZONE句法
  • 为什么MERGE语句的目标表不允许启用规则?

    我们有一个使用以下 SQL 更新数据库的过程 IF NOT EXISTS SELECT FROM Target Table WHERE Target Table ID BEGIN INSERT END ELSE BEGIN UPDATE E
  • MySQL 中的类型:BigInt(20) 与 Int(20)

    我想知道两者之间有什么区别BigInt MediumInt and Int是 很明显 它们会允许更大的数量 不过 我可以做一个Int 20 or a BigInt 20 这会让人觉得这并不一定与尺寸有关 一些见解会很棒 只是有点好奇 我一直
  • 如何在没有聚合函数的情况下在sql server中创建枢轴查询

    我正在使用 MS SQL SERVER 2008 并且有以下数据 select from account PERIOD ACCOUNT VALUE 2000 Asset 205 2000 Equity 365 2000 Profit 524
  • 执行存储过程时 ExecuteNonQuery() 返回 -1

    我正在尝试在 Visual Studio 中执行存储过程 下面给出 CREATE PROCEDURE dbo addStudent stuName varchar 50 address varchar 100 tel varchar 15
  • 如何使用 SQL - INSERT...ON DUPLICATE KEY UPDATE?

    我有一个脚本可以捕获推文并将其放入数据库中 我将在 cronjob 上运行脚本 然后在我的网站上显示数据库中的推文 以防止达到 Twitter API 的限制 所以我不想在我的数据库中有重复的推文 我知道我可以使用 INSERT ON DU
  • 尝试在 Mac OSX 上的 virtualenv 和 MySQL 中安装 Django CMS 时出错

    当我尝试使用 virutalenv 安装带有 MySQL 的 django CMS 时 出现以下错误 RuntimeError maximum recursion depth exceeded Users ethan Sites env b
  • 像搜索一样在mysql中包含空格

    我在某些情况下使用 mysql like 关键字时遇到问题 我的要求是这样的 首先 当我搜索时 ABC 结果应该找到ABC and ABCdef但不是xyzABCdef or xyzABC 乍一看使用起来很简单ABC 但在我搜索时的情况 h
  • 在 Java Web 应用程序中获取 DataSource 资源

    我的 context xml 文件中有以下资源标记
  • Access 2013 SQL 中的转换和透视

    如何使用 TRANSFORM 和 PIVOT 函数从第一个表获取第二个表 TABLE 01 Config ID ConfigField ConfigValue 11 Name Basic 11 Version 1 01 11 Owner J

随机推荐

  • 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件商