sql-server - 当我有一个“IsDeleted”列类型的日期时间列时,我是否需要一个布尔列?
问题描述
假设我有一个名为的表Product
,并且应该在逻辑上删除该表中的行。
表示表必须有一IsDeleted
列。假设我想存储(逻辑上)删除行的日期和时间,因此,表必须有另一个(可为空)列,称为“ DeletedOn
”。
我的问题是:在这种风格中,我是否需要有 ' IsDeleted
' 列?当我有 ' DeletedOn
' 列?(当' DeletedOn
'列为空时,该行不被删除,当它不为空时,该行被删除。所以,我认为我们不需要' IsDeleted
'列)
解决方案
使用DeletedOn IS NULL
orIsDeleted=0
几乎会给您类似的性能,bit
可能会有一个小的优势,如stackoverflow上的这个问题(索引布尔列与日期时间列的查询性能)中所解释的那样。但这不会那么重要。
如果有额外的bit
列,您必须考虑通过触发器或通过计算列来维护完整性,这会导致代码更加复杂。
在这种风格中,我需要有“IsDeleted”列吗?当我有“DeletedOn”列时?
根据我的建议,如果您保持删除日期,则不需要额外的列。
推荐阅读
- authentication - 使上传的 IIS 站点文件只能通过身份验证查看。用户
- php - PHP 着火了,忘记了不使用远程服务器
- react-native-ios - CocoaPods/CocoaPods 中没有这样的文件或目录 appcenter.podspec.json
- oracle - ORA-12518, TNS: 侦听器无法切换客户端连接
- java - 放心 | 如何使用 JSONpath 获取基于匹配标准的字符串值
- html - 为什么你可以用 CSS 来设置一些 HTML 元素的样式,但不能用属性
- c++ - 使用 starttls 函数 ldap_start_tls_s (ldap_int_tls_start) 时在 openldap 库中报告崩溃
- grafana - Graphite 组时间戳事件(按周)
- apache-spark - 使用 spark(python) 创建 zip 文件
- swift - 如何在 Swift 中检查类型