Как я могу выгнать логическое поле в SQL Server от обнуляемого столбца? - PullRequest
2 голосов
/ 17 мая 2010

Мне бы хотелось, чтобы в базе данных было два столбца: один для отслеживания того, отправил ли пользователь что-то, а другой для отметки времени этого представления.

Как я могу структурировать определение таблицы так, чтобы состояние этих двух столбцов никогда не было несовместимым?

По сути, я бы хотел, чтобы логическое поле управлялось тем, является ли столбец SubmittedDate пустым. Вот фрагмент определения таблицы:

CREATE TABLE SomeSchema.SomeTable 
(
    ...
    SubmittedDate                   datetime                NULL,
    Submitted                       bit                     NOT NULL        DEFAULT(0), -- Drive off of SubmittedDate?
    ...

)

Какой лучший способ сделать это?

Спасибо!

Ответы [ 2 ]

6 голосов
/ 17 мая 2010

Используйте только один столбец - DATETIME. Он выполняет двойную функцию - столбец, имеющий значение null, означает, что он не был отправлен, но если значение существует - вы также знаете, когда.

2 голосов
/ 17 мая 2010

Использовать вычисляемый столбец :

CREATE TABLE SomeSchema.SomeTable 
(
    ...
    SubmittedDate                   datetime                NULL,
    Submitted      as cast(case when SubmittedDate is null then 0 else 1 end as bit)
)
...