2011-05-19 68 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;