根据给定日期自动更改sql数据库中的值

时间:2014-07-03 22:22:53

标签: c# sql sql-server database

是否可以自动更改sql中的值。举一个例子,它是一个租车数据库,一个客户想要预订一辆车,比如7月15日(现在是第4个)。当我运行我的C#程序并点击一个按钮来保留它在7月15日(未来日期)的RentalDate列中的数据库中写入。现在可用性列中(可用汽车)它应该保持为真,直到该日期( 15)然后应该自动更改为False。有可能做那样的事吗?

2 个答案:

答案 0 :(得分:3)

我会考虑一种不同的设计,您可以在这里预订一张预订桌和一张车牌。然后,如果您预订车辆,您可以在时间范围内写一行到预订表。然后,您可以检查此表以查看该车是否可用于任意请求的时间跨度。

答案 1 :(得分:1)

您可以创建一个SQL Agent Job来执行存储过程以按给定的时间表执行更新,即每天午夜。

存储过程代码将包含类似这样的内容,以便将RentalDate与今天的日期进行比较以执行更新:

UPDATE RentalsTable
SET Availability = 0 -- False as a bit
WHERE RentalDate = CAST(GETDATE() as DATE) -- takes date portion of GETDATE()

创建作业以运行存储过程的示例脚本如下所示:

--Add a job
EXEC dbo.sp_add_job
    @job_name = N'MY UPDATE JOB';

--Add a job step named process step. This step runs the stored procedure
EXEC sp_add_jobstep
    @job_name = N'MY UPDATE JOB',
    @step_name = N'process step',
    @subsystem = N'TSQL',
    @command = N'EXEC [YOUR_STORED_PROC_TO_PERFORM_UPDATE]'

--Schedule the job at a specified date and time
exec sp_add_jobschedule @job_name = N'MY UPDATE JOB',
@name = 'MySchedule',
@freq_type=1,
@active_start_date = '2014-07-03',
@active_start_time = '00:00:00'

-- Add the job to the SQL Server Server
EXEC dbo.sp_add_jobserver
    @job_name =  N'MY UPDATE JOB',
    @server_name = N'[SERVER NAME]'

或者,您可以使用Management Studio和向导来创建预定作业。

以上脚本改编自following site,其中还提供了通过管理工作室设置工作的分步指南。

进一步阅读:How to: Create a SQL Server Agent Job (Transact-SQL)