Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何写触发器?_Sql_Sql Server_Tsql_Sql Server 2008_Triggers - Fatal编程技术网

Sql 如何写触发器?

Sql 如何写触发器?,sql,sql-server,tsql,sql-server-2008,triggers,Sql,Sql Server,Tsql,Sql Server 2008,Triggers,我正在开发一个在线视频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()

我正在开发一个在线视频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 

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


您可以通过视图、存储过程或其他一些代码/客户机检查来实现这一点。

SQL Server不能使用SELECT触发器(看起来像那种方言)。仅针对记录的数据更改触发激发(更新、删除、插入)


您可以通过视图、存储过程或其他一些代码/客户端检查来实现这一点。

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

类似这样的内容以满足您的业务需求:

 CREATE PROC GetVideos

 AS
     DECLARE @Now smalldatetime = GETDATE();

     SELECT ID, URL FROM Videos
     WHERE  DATEPART(dw, @Now) != 3 
     AND    DATEPART(hour, @Now) <= 10;
CREATE PROC-GetVideos
作为
声明@Now smalldatetime=GETDATE();
从视频中选择ID、URL
WHERE DATEPART(dw,@Now)!=3.

和DATEPART(hour,@Now)建议将业务逻辑移到存储过程中

类似这样的内容以满足您的业务需求:

 CREATE PROC GetVideos

 AS
     DECLARE @Now smalldatetime = GETDATE();

     SELECT ID, URL FROM Videos
     WHERE  DATEPART(dw, @Now) != 3 
     AND    DATEPART(hour, @Now) <= 10;
CREATE PROC-GetVideos
作为
声明@Now smalldatetime=GETDATE();
从视频中选择ID、URL
WHERE DATEPART(dw,@Now)!=3.

和DATEPART(hour,@Now)您使用的是什么数据库?你在哪一行得到错误?没有选择触发器。另外,我认为你根本不应该解决数据库的这个特殊问题。那么请告诉我如何解决这个问题你在使用什么数据库?你在哪一行得到错误?没有选择触发器。另外,我认为你根本不应该解决数据库中的这个特殊问题。那么请告诉我如何解决这个问题