2011-05-19 43 views
0

我正在开发在线视频Web应用程序。我想限制在特定时间访问视频。我写了一个触发器,但我遇到了不正确语法的问题。请帮帮我。如何写触发器?

CREATE TRIGGER trig_Update_Employee ON [CourseTopic] 
FOR SELECT AS 

BEGIN 

    DECLARE @week int, @hour int 
     SET @week = DATEPART(dw, GETDATE()) 
     SET @hour = DATEPART(hour, GETDATE()) 
    IF @week = 3 OR @hour > 10 AND @hour > 10 
    BEGIN 
    ROLLBACK tran 
    PRINT 'class timing is over you can not watch this video at this time.' 
    END 
END 
+0

您正在使用什么数据库?你在哪一行发生错误? – Oded 2011-05-19 05:21:15

+0

sql server 2008 – user760379 2011-05-19 05:22:35

+1

没有这样的事情作为SELECT触发器。另外,我认为你不应该在数据库上解决这个特殊问题。 – Tomalak 2011-05-19 05:24:59

回答

3

你不能有SQL Server的SELECT触发器(看起来像那个方言)。触发器仅触发记录的数据更改(更新,删除,插入)

您可以通过视图或存储过程或其他代码/客户端检查来实现此目的。

0

建议将您的业务逻辑移至存储过程。

像这样的事情,以满足您的业务需求:

CREATE PROC GetVideos 

AS 
    DECLARE @Now smalldatetime = GETDATE(); 

    SELECT ID, URL FROM Videos 
    WHERE DATEPART(dw, @Now) != 3 
    AND DATEPART(hour, @Now) <= 10;