【问题标题】:How to write a query for deleting a trip?如何编写删除行程的查询?
【发布时间】:2020-08-26 02:21:22
【问题描述】:

查询有困难。我是 SQL 新手,所以试图更好地查询删除行程。

有谁知道如何让一个查询变得更容易?

谢谢

【问题讨论】:

  • 您获得了一些反对意见,将来有关您的环境的更多详细信息会有所帮助。用最少的细节来确定你的意图有点困难。也就是说,我想我知道你的意图是什么。
  • 另一件可以帮助您的问题得到更多关注的事情是指定一种特定的 SQL 风格。例如,我提供的答案不适用于所有 SQL 语言。但我会以 Microsoft SQL Server 为例。

标签: sql foreign-keys sql-delete


【解决方案1】:

如果您想在一个语句中对所有表执行删除操作,并且您碰巧使用了支持 CASCADE 的 SQL 引擎,那么您可能会走运。

从您的示例查询看来,所有表都共享链式 PK\FK 关系。

  • 通过 checkpoint_id 的场地
  • 通过 day_id 的检查点
  • trip_id 的天数
  • 旅行(在顶部)

我的推断是,TRIP 是链的顶端。如果您专门定义了 PK\FK 关系“CONSTRAINT”,您应该为良好的 DB 设计,然后在每个表上,您可以使用选项 CASCADE 更改约束。完成后,只需从行程中删除一行将通过定义的关系自动删除下面的所有其他行。

换句话说,使用 CASCADE 和支持它的 SQL ENGINE - 您可以简单地发出最后一个删除语句,其余的都是隐含的。

DELETE FROM trips WHERE id = 27

在此处查看table constraint 选项。注意 CASCADE 定义。 Similar question 这里有解释。

【讨论】:

  • 你好。谢谢你的回答。我们有旅行应用程序,我正在尝试删除我的旅行。如您所见,我们有五张桌子。我创建了查询,但我的解决方法并不专业。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-27
  • 1970-01-01
  • 1970-01-01
  • 2016-06-20
  • 2011-01-08
  • 2013-09-10
  • 1970-01-01
相关资源
最近更新 更多