从数据库中删除文件和相应条目

2024-03-21

我有一个处理文件管理的网站。用户可以上传文件、添加描述、编辑和删除。这种情况的最佳实践是什么?

  1. 我将文件存储在文件系统中。

  2. 我该如何处理文件的删除?在这种情况下,我必须删除实体:数据库中的文件和条目。第一种情况是我删除文件,如果没有错误,我从数据库中删除该条目。但是,如果无法删除数据库中的条目,我将无法恢复我的文件。因此,第二种情况是相反的:首先从数据库输入,然后从文件输入。但同样,当文件无法删除时,我无法恢复数据库中的条目。哪种方法更好?或者还有其他的吗?

我认为这个问题对于所有网络编程语言和所有数据库引擎都是普遍的。但是假设我有 MySQL 和 PHP,所以从数据库存储过程级别删除文件是不可能的。


我通常发现最好还是去做软删除 http://databaserefactoring.com/IntroduceSoftDelete.html,特别是对于数据库中的数据。

通过这种方式,您可以简单地将文件放在新位置以将其表示为已删除,并将数据库中的条目标记为已删除。如果数据库删除由于某种原因失败,您仍然可以使用该文件。

将文件放在新位置后,您可以将该位置备份到另一个位置,或者进行设置以定期从该位置删除项目。

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

从数据库中删除文件和相应条目 的相关文章

随机推荐

  • 通过shields.io徽章添加SonarQube覆盖范围

    我有 com github xxxxxx xxxxxx Maven 存储库 我想添加盾牌徽章 但我有一个无效徽章 https img shields io sonar https sonarqube com com github norau
  • GMAIL SMTP:对 SSPI 的调用失败异常 - 不支持请求的功能

    我正在使用 gmail smtp 发送邮件 主机 smtp gmail com 端口 587 在 MVC 应用程序中使用 gmail smtp 发送邮件时出现异常 以下代码用于发送邮件 public static int SendMail
  • Three.js 的外观似乎被翻转了

    我这里有一个演示 测试场地 http www myuplay com game test html or Backup http direct myuplay com game test html 由于某种原因 即使鼠标矢量是正确的 我的对
  • R - 检测到非树模型!此功能只能与树模型一起使用

    我是 R 新手 当我尝试跑步时xgb importance 我得到这个 Error in xgb model dt tree feature names feature names text text Non tree model dete
  • 当父溢出更改时,firefox 过渡会中断

    我今天遇到一个问题 花了我很长时间来调试 我在网上找不到解决方案 所以我认为记录下来会很有用 如果父级的 溢出 属性与转换一起更改 则转换似乎在 Firefox 上不起作用 即 parent overflow hidden parent h
  • 在 MVC 4 中将对象转换为 JSON

    我正在使用将对象转换为 JSONJavaScriptSerializer我可以在服务器代码中看到这个 JSON 输出 UserId 1 UserName Admin 但在用户界面中它被转换为如下所示 quot UserId quot 1 q
  • 不能在常量列表中使用变量索引

    使用设备建模语言 DML 1 4 版 我创建了一个列表参数 例如 param X 0 0 0 0 0 1 我想在使用变量的方法中访问它们 例如 method get var uint32 idx gt uint32 return X idx
  • 如何通过 ID 以外的方式获取 RESTful 资源?

    在某些情况下 我可能需要通过 ID 以外的参数来查找对象 正确的 RESTful 方法是什么 例如我可能想找到一个User by username and password 所以严格的 RESTful GET users 1 行不通 根据R
  • 加速 WPF 调整大小/重绘

    我注意到即使调整空 WPF 窗口的大小也会显示黑色区域 我桌面上的很多程序都没有这些问题 所以我想知道 有没有办法设置调整大小重绘优先级或其他东西 并加快 WPF 窗口大小的调整速度 或者这个问题是不可避免的 这是 WPF 工作方式的继承
  • Java 加密替代硬编码密钥

    我是加密新手 我查看了 javax crypto 文档并使用此代码对文件进行了加密 File saveFile new File Settings set saveFile delete FileOutputStream fout new
  • 映射 MMIO 区域写回不起作用

    我希望对 PCIe 设备的所有读写请求都由 CPU 缓存进行缓存 然而 它并没有像我预期的那样工作 这些是我对回写 MMIO 区域的假设 对 PCIe 设备的写入仅在缓存回写时发生 TLP 有效负载的大小是缓存块大小 64B 然而 捕获的
  • p2p0是android中WIFI DIRECT的无线接口吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 当我打印 Android 设备中的所有接口时 03 10 19 50 15 484 I System out 22415 lo 03 10
  • PyQt 4 UI 冻结

    下面的程序应该只是累加和 int 并在标签中显示其值 但过了一会儿 GUI 停止工作 而循环继续 from PyQt4 import QtGui QtCore import sys class main window QtGui QWidg
  • JavaScript 中的“可绑定”变量?

    从我对 Flex 的一点经验中 我了解了可绑定变量 例如 文本元素的内容会随着变量的值而变化 我想知道是否可以在 JavaScript 中做这样的事情 例如 假设我有一个 h1 我想包含文档的标题 这可以很容易地完成document get
  • “equal”模板功能是如何实现的? (谓词版本)

    我正在阅读 Accelerated C 一书 其中一个练习要求我们模拟标题中的 equal 函数 到目前为止 我已经实现了简单的版本 它采用三个参数 如下所示 template
  • 禁用适用于平板电脑和 iPad 的 Magento 移动主题

    我制作了一个包含桌面和移动主题的网站 它工作得很好 但在平板电脑和 iPad 中它显示了我不想要的移动主题 所以我使用以下异常 iPhone iPod BlackBerry Pre Palm Googlebot Mobile mobi Sa
  • 不同 django 模型的公共字段集中在一处

    我有一些在多个模型中重复的列 有什么解决方案可以将它们放置在某个地方并使用任何模型吗 您可以通过创建基类并在模型中继承它们来实现这一点 Example class TimestampsModel models Model classmeth
  • Java Swing 在 Eclipse Oxy 4.7.3a 上运行?

    我正在尝试在 macOS high Sierra 上的 eclipseoxygen 4 7 3a 中使用 windowbuilder 它安装得很好 但每次我尝试打开设计部分时 它都会显示此错误 Eclipse 在 0 下运行 但是这个 Ja
  • 在 select2 上设置标签值

    我的页面上有选择字段
  • 从数据库中删除文件和相应条目

    我有一个处理文件管理的网站 用户可以上传文件 添加描述 编辑和删除 这种情况的最佳实践是什么 我将文件存储在文件系统中 我该如何处理文件的删除 在这种情况下 我必须删除实体 数据库中的文件和条目 第一种情况是我删除文件 如果没有错误 我从数