是否可以自动更改sql中的值。举一个例子,它是一个租车数据库,一个客户想要预订一辆车,比如7月15日(现在是第4个)。当我运行我的C#程序并点击一个按钮来保留它在7月15日(未来日期)的RentalDate列中的数据库中写入。现在可用性列中(可用汽车)它应该保持为真,直到该日期( 15)然后应该自动更改为False。有可能做那样的事吗?
答案 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,其中还提供了通过管理工作室设置工作的分步指南。