我想在数据库中有两列,一列用于跟踪用户是否提交了某些内容,另一列用于该提交的时间戳。
如何构造表定义以使这两列的状态永远不会出现矛盾?
基本上,我希望布尔字段由SubmittedDate列是否为空来驱动。这是表定义的片段:
CREATE TABLE SomeSchema.SomeTable
(
...
SubmittedDate datetime NULL,
Submitted bit NOT NULL DEFAULT(0), -- Drive off of SubmittedDate?
...
)
实现这一目标的最佳方法是什么?
谢谢!
答案 0 :(得分:6)
只使用一列--DATETIME一列。它具有双重功能 - 列为空意味着它未提交,但如果值存在 - 您也知道何时。
答案 1 :(得分:2)
CREATE TABLE SomeSchema.SomeTable
(
...
SubmittedDate datetime NULL,
Submitted as cast(case when SubmittedDate is null then 0 else 1 end as bit)
)