使用触发器过滤特定日期

时间:2015-12-28 05:39:00

标签: mysql sql triggers

我有一个名为COURSE的表,其中包含以下列:

  • CourseId int
  • CourseName varchar
  • DateofStart Date

我想创建一个触发器,确保课程在8月份无法运行。

3 个答案:

答案 0 :(得分:0)

试试这个SQL代码(对于SQL Server)

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER Tr_Course 
    ON Course
INSTEAD OF UPDATE
AS 
BEGIN
    SET NOCOUNT ON;

    IF TRIGGER_NESTLEVEL() > 1
    RETURN

    UPDATE Course
       SET dateOfStart = I.dateOfStart
    FROM Course AS C
        JOIN INSERTED I ON C.courseID = I.courseID
    WHERE MONTH(I.dateOfStart) <> 8
END
GO

答案 1 :(得分:0)

检查本站点中给出的示例以编写触发器 https://docs.oracle.com/cd/B19306_01/appdev.102/b14251/adfns_triggers.htm#i1025109

步骤1:由于您需要检查在八月份期间无法运行的课程,您需要一个BEFORE INSERT触发器类型。(检查链接中的语法)

步骤2:在Trigger主体中写入逻辑,该主体将检查表格中输入的日期

步骤3:如果DateofStart是八月提出异常或相应的过程

尝试共享代码段。

答案 2 :(得分:-1)

create trigger check_month
on COURSE
for Insert
as
declare @Date nvarchar(10) 
declare @month int
select @Date=i.DateofStart from inserted i;     
set @month= (select DATEPART(MONTH,@Date))
if(@month=8)
begin
   Rollback
end
else
 begin
 commit
end