【问题标题】:sql delete statementsql删除语句
【发布时间】:2011-01-20 14:19:50
【问题描述】:

我有一个 .cs 文件,我正在其中查看一个数据库和一个特定 ID 的站点。 如果站点上的 ID 不在 db 中(还),它会将其保存到 db 中。 就这么简单。

但是如果 ID 在数据库中而不是在页面上怎么办。如何检查。如果它不再在网站上,如何删除它。

我希望我已经足够清楚了。

谢谢

塞巴斯蒂安

【问题讨论】:

  • 你能解释一下吗?发布一些代码以获取更多信息?您当前的 sql 查询是什么?它们是否受到限制,因此这些值不会出现在页面上?
  • 如果您可以通过网页完全控制数据库,您应该能够防止这种情况发生(在页面上删除记录时删除记录)。
  • 您需要在同一个查询/过程中同时执行这两项操作,还是它们是两个单独的任务?
  • 我这里没有当前代码。但它是这样的。我从 fb json 获得一个 id,并检查它是否在 db 中。如果不是,则 sql 将其添加到数据库中,如果它已经在数据库中,则它不执行任何操作。但是,如果有人删除了 fb 墙上的帖子,该帖子的 id 已经在数据库中,但帖子不再在墙上怎么办。所以我不希望那个帖子出现在表格内。那个更好吗? TY

标签: c# sql sql-server asp.net-mvc


【解决方案1】:

如果我对您的理解正确,您需要进行预检查。因此,假设从 FB 墙上您有墙的“主”ID,并且您将墙中的所有帖子与数据库中的该 ID 相关联,您首先获取墙的所有帖子 ID 并检查您的数据库。如果它们存在并且您的数据库中有一个不再挂在墙上,只需将其删除即可。然后继续你的常规插入。

比如说,你所有的数据看起来都是这样的:

FBWall {
    WallId  1,
    Posts = Posts[4] {
        Post { PostId = 1 },
        Post { PostId = 2 },
        Post { PostId = 4 },
        Post { PostId = 5 }
    }
}

DBWall {
    WallId = 1,
    Posts = Posts[4] {
        Post { PostId = 1 },
        Post { PostId = 2 },
        Post { PostId = 3 },
        Post { PostId = 4 }
    }
}

FBWall 中,您有 4 个 ID 为 1、2、4、5 的帖子;在DBWall 中,您有 4 个 ID 为 1、2、3、4 的帖子。不同之处在于 FBWall 的帖子 3 已消失,因此您需要将其从 DBWall 中删除。同样在FBWall 中,您现在有不在DBWall 中的帖子5,因此您需要插入它。

现在我想起来,操作的顺序是无关紧要的。您可以先在数据库中插入新帖子,然后删除过时的帖子,反之亦然。最终结果是一样的。

希望对您有所帮助。

【讨论】:

    【解决方案2】:

    SQl Server 2008 有一个 MERGE 语句,我建议你看看它,你可以在一个语句中删除坏记录并更新现有的并插入新的。它太酷了。在“在线图书”中掠夺它

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-11
      • 2013-10-15
      • 1970-01-01
      相关资源
      最近更新 更多