怎么写触发器?

时间:2011-05-19 05:20:01

标签: sql sql-server tsql sql-server-2008 triggers

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

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 

2 个答案:

答案 0 :(得分:3)

您不能拥有SQL Server的SELECT触发器(看起来像那个方言)。仅触发记录的数据更改(UPDATE,DELETE,INSERT)

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

答案 1 :(得分:0)

建议将业务逻辑转移到存储过程。

这样的东西可以满足您的业务需求:

 CREATE PROC GetVideos

 AS
     DECLARE @Now smalldatetime = GETDATE();

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