как написать триггер? - PullRequest
0 голосов
/ 19 мая 2011

Я занимаюсь разработкой веб-приложения для онлайн-видео.Я хочу ограничить доступ к видео в определенное время.Я написал триггер, но у меня возникли проблемы с неправильным синтаксисом.Пожалуйста, помогите мне.

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 ]

3 голосов
/ 19 мая 2011

У вас не может быть триггеров SELECT для SQL Server (похоже на этот диалект). Триггеры срабатывают только для зарегистрированных изменений данных (UPDATE, DELETE, INSERT)

Этого можно достичь с помощью представления, хранимой процедуры или другой проверки кода / клиента.

0 голосов
/ 19 мая 2011

Вместо этого предложите перенести свою бизнес-логику в хранимую процедуру.

Что-то вроде этого в соответствии с требованиями вашего бизнеса:

 CREATE PROC GetVideos

 AS
     DECLARE @Now smalldatetime = GETDATE();

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