如果我想确保一个操作只能由用户每周进行一次,那么有效的方法是什么?如果用户在星期五进行了该操作,那么他仍然可以在星期二进行,因为它是“下一周”。
答案 0 :(得分:1)
您的用户无法直接访问您的数据库服务器,有一个用于执行此操作的UI ...是否正确?
因此,有效的方法是在表中使用“OperationLastPerformed”(类型为`datetime)列,并在执行操作时填充该字段。
此时,您的UI使用了哪种编程语言,从您的代码中强制执行该业务逻辑将非常容易(并且正确)...
如果这是不可接受的,并且必须从后端完成,您可以创建一个触发器,在提交记录之前检查“OperationLastPerformed”字段,如果日期时间在当前周内,则回滚提交...
答案 1 :(得分:0)
从一般意义上讲,你可以做到这一点。它假设一个历史表至少有一列[Last_Date_Ran]
答案 2 :(得分:0)
创建一个存储用户操作历史记录的表:
CREATE TABLE UserActions (
userId int,
weekOfYear int,
year int
)
要检查用户是否在同一周内执行了某项操作,您可以使用DATEPART功能来确定一周:
IF EXISTS (SELECT * FROM UserActions WHERE userId = @userID and weekOfYear = DATEPART(isowk, GetDate() AND year = Year(GetDate()
)
如果返回NULL,则表示用户未在当前周执行任何操作。然后,您可以在执行操作后插入一行。
INSERT INTO UserActions (userId, weekOfYear int, year)
VALUES (@userId, DATEPART(isowk, GetDate(), Year(GetDate())