如何自动更改sql中的位值

时间:2013-09-11 09:01:15

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

我的应用程序中的编码器我有一些用户填写的详细信息,输入详细信息并按下提交按钮后它将存储在数据库中。我有与该表单相关的位值,以便当用户输入详细信息并单击“提交”按钮时,该位变为真。

我想要的是在一天后该位自动变为假我怎么能这样做

2 个答案:

答案 0 :(得分:0)

SQL Server没有办法执行“Elapsed-Time”触发器。您只能在插入/更新/删除等触发数据更改...

我建议的是,不是存储位值,而是存储datetime

因此,当用户填写表单并勾选方框时,请不要存储位值,而是将DateTime列设置为getdate()

然后更改依赖于此列的任何逻辑来测试以查看列中的值是否为>距离当前时间1天。

if( DateDiff(day, your_column, getdate()) >= 1 ) --more than 1 day has elapsed.

答案 1 :(得分:0)

我想提出一个不同的方法。

这就是我要做的事情:

我会存储点击发生的日期和时间,而不是存储实际的布尔值。因此,我会使用bit列而不是Date列。

稍后,当试图(被动地,不主动地)确定是否已经过了一天 我会从当前日期时间中减去该特定列中的存储值,并检查它是否会产生一整天。

它是这样的:

// instead of this
row[column] = true;
// do this
row[other_column] = DateTime.UtcNow;

以及您要测试值的位置:

// instead of this
if ((bool)row[column]) { ... }
// do this
DateTime dateAndTimeOfClick = (DateTime)row[other_column];
bool isStillTrue = DateTime.UtcNow - dateAndTimeOfClick < TimeSpan.FromDays(1);
if (isStillTrue) { ... }