如何使用Python实现定时任务和周期性任务?照明定时控制方式实例

2024-01-26 20:40:06 15

如何使用Python实现定时任务和周期性任务?照明定时控制方式实例

大家好,触发器实例相信很多的网友都不是很明白,包括如何使用Python实现定时任务和周期性任务也是一样,不过没有关系,接下来就来为大家分享关于触发器实例和如何使用Python实现定时任务和周期性任务的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

本文目录

如何使用Python实现定时任务和周期性任务

在我们的应用场景中,经常用到一些定时任务,在Python中有这样的一个模块,它是基于Quartz的一个Python定时任务框架 APScheduler,实现了Quartz的全部功能,使用起来十分简单、高效。其提供了基于日期、固定时间间隔以及Crontab类型的任务,并且支持持久化任务。同时也提供了不同的存储机制,可以方便与数据库等第三方的外部持久化机制进行协同工作。它主要包含了四种组件:

  • Triggers:任务触发器,任务以何种方式触发。
  • Job stores:任务存储器,持久存储任务。
  • Executors:任务执行器,执行任务的模块。
  • Schedulers:任务调度器,通过配置trigger、job store、executor等实现对任务的增删改查等调度控制。

apscheduler 安装

pip install apscheduler

循环周期性任务

使用 interval 触发器,实现按照时间间隔执行任务,比如,我们需要程序每隔2秒中执行一次任务,代码示例如下:

代码执行效果如下:


定时任务

使用 cron触发器,实现在指定时间点执行任务。比如, 我们需要程序在2、4月,7-9月,每天晚上22点21分执行一次任务,代码示例如下:

代码执行效果如下:

照明定时控制方式实例

利用光敏器件阻抗随光照强度的变化而变化的特点去控制电信号的强弱,再由传感器将变化的电信号传递给触发器,只要电信号强度达到一定程度,将触发触发器,使其导通工作

怎么用SQL server 2000 和VB 做一个存储过程和触发器的例子

1. 和特定表或视图关联。触发器定义在特定的表或视图上,称为触发器表或触发器视图2. 自动调用。当试图在某个表插入、更新或删除数据,而在那个表上定义了针对所做动作的触发器,那么触发器会自动执行3. 不能被直接调用。不像普通的存储过程,触发器不能被直接调用,也不传递或接受参数4. 是一个事务的部分。触发器及触发它的语句被视为单个事务,可以在触发器内的任何地方被回滚二、创建触发器创建触发器,触发器是一种特殊的存储过程,在用户试图对指定的表执行指定的数据修改语句时自动执行。Microsoft�0�3 SQL Server�6�4 允许为任何给定的 INSERT、UPDATE 或 DELETE 语句创建多个触发器。1.语法CREATE TRIGGER trigger_name ON { table | view } }是指定在表或视图上执行哪些数据修改语句时将激活触发器的关键字。必须至少指定一个选项。在触发器定义中允许使用以任意顺序组合的这些关键字。如果指定的选项多于一个,需用逗号分隔这些选项。对于 INSTEAD OF 触发器,不允许在具有 ON DELETE 级联操作引用关系的表上使用 DELETE 选项。同样,也不允许在具有 ON UPDATE 级联操作引用关系的表上使用 UPDATE 选项。AS是触发器要执行的操作。sql_statement是触发器的条件和操作。触发器条件指定其它准则,以确定 DELETE、INSERT 或 UPDATE 语句是否导致执行触发器操作。3.注意事项:SQL Server 不允许在触发器中使用下列语句: ALTER DATABASE、CREATE DATABASE、DROP DATABASE、LOAD DATABASE、LOAD LOG、RESTORE DATABASE、RESTORE LOG三、触发器实例1.简单的触发器,几种触发器的比较.CREATE TRIGGER TRIG1 ON 图书FOR DELETEAS PRINT ’触发器已执行!’ 2.在“租借信息表”上创建 INSERT触发器“借阅册数”,如果“允借册数”为0,就不能再借了。CREATE TRIGGER 借阅册数 ON 借阅AFTER INSERTASIF (SELECT 允借册数 FROM 读者,inserted WHERE 读者.借书证号=inserted.借书证号)=0BEGIN PRINT ’你可借书的册数为0,不能再借图书了’ ROLLBACK TRANSACTIONEND3.在“租借信息”表上创建 INSERT触发器“借书期限”,如果学生借书时间超过30天则不能借书。CREATE TRIGGER 借书期限 ON 租借信息 AFTER INSERTAS IF EXISTS(SELECT * FROM 租借信息,inserted WHERE 租借信息.借书证号=inserted.借书证号 AND (GETDATE())-租借信息.借书日期)》30 AND 租借信息.还书日期 IS NULL)BEGIN PRINT ’你有超期未还的图书,不能再借图书了!’ ROLLBACK TRANSACTIONEND存储过程的应用举例 例1 创建一个“借书过程”存储过程,该存储过程实现的功能是帮助读者完成借书过程。即读者只要提供借书证号、图书名称和图书的作者,就能完成借书。该程序完成的具体操作是:根据读者所提供的图书名称和作者,在图书信息表中进行查询,如果该书未被借出则继续完成借书操作,否则提示读者图书已经惜出。借书操作主要包括三个操作:向“租借信息”表中插入一条记录(保存该读者的借书信息),将“图书信息”表中对应记录的状态列设为1(避免他人再惜),将“学生信息”表中对应记录的借书册数增1(统计该读者的借书册数)。这三个操作要么都执行,要么都不执行。USE 图书借阅管理GOCREATE PROC 借书过程 @借书证号 char(5),@图书名称 varchar(40),@作者 varchar(20) AS DECLARE @借阅号 int,@图书编号 varchar(6) IF EXISTS (SELECT * FROM 图书信息 WHERE 图书名称=@图书名称 and 作者=@作者 and 状态=0) BEGIN BEGIN TRAN SELECT @图书编号=图书编号 FROM 图书信息 --取出图书所对应的图书编号 WHERE 图书名称=@图书名称 and 作者=@作者 and 状态=0 UPDATE 图书信息 SET 状态=1 WHERE 图书编号=@图书编号 --修改"状态"列的值 IF @@error!=0 BEGIN ROLLBACK TRAN PRINT ’更新图书信息表失败。’ RETURN 1 END SELECT @借阅号=借阅号 FROM 租借信息 ORDER BY 借阅号 --取出最大借阅号 IF @借阅号 is null SET @借阅号=0 INSERT 租借信息(借阅号,借书证号,图书编号,借书日期) VALUES (@借阅号+1,@借书证号,@图书编号,getdate()) IF @@error!=0 BEGIN ROLLBACK TRAN PRINT ’借书失败。’ RETURN 3 END UPDATE 学生信息 SET 借书册数=借书册数+1 --修改该读者的借书册数 WHERE 借书证号=@借书证号 IF @@error!=0 BEGIN ROLLBACK TRAN PRINT ’更新学生信息失败。’ RETURN 4 END COMMIT TRAN PRINT ’恭喜您借书成功!图书编号是:’+@图书编号 RETURN 0 END ELSE BEGIN PRINT ’图书已经借出或没有。’ RETURN 2 END 执行”借书过程’USE 图书借阅管理GOEXEC 借书过程 ’00006’,’大学英语(2)’,’李慧琴’ 例2 编写“还书”存储过程,要求通过学生的“借书证号”和“图书编号”来完成还书过程。 还书操作:修改“租借信息”表中的“还书日期”,相应地将“图书信息”表中对应记录的“状态”列的值修改为0,“学生信息”表中“借书册数”减1。 CREATE PROC 还书 @借书证号varchar(5),@图书编号 varchar(6),@借书日期 datetime=null AS BEGIN TRAN IF @还书日期 IS NOT NULL UPDATE 租借信息SET 还书日期=@还书日期 WHERE 图书编号=@图书编号 AND 借书证号=@借书证号 ELSE UPDATE 租借信息SET还书日期=getdate() WHERE 图书编号=@图书编号 AND 借书证号=@借书证号 IF @@ERROR!=0 OR @@ROWCOUNT=0 BEGIN ROLLBACK TRAN PRINT ‘还书失败。’ RETURN 1 END UPDATE 图书信息 SET 状态=0 WHERE图书编号=@图书编号 IF @@ERROR!=0 OR @@ROWCOUNT=0 BEGIN ROLLBACK TRAN PRINT ‘还书失败。’ RETURN 2 END UPDATE 学生信息 SET 借书册数=借书册数-1 WHERE 借书证号=@借书证号IF @@ERROR!=0 OR @@ROWCOUNT=0 BEGIN ROLLBACK TRAN PRINT ‘还书失败。’ RETURN 3 END COMMIT PRINT ‘恭喜你还书成功!

Sql触发器

SQL触发器实例定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。 常见的触发器有三种:分别应用于Insert , Update , Delete 事件。 我为什么要使用触发器?比如,这么两个表: Create Table Student( --学生表 StudentID int primary key, --学号 .... ) Create Table BorrowRecord( --学生借书记录表 BorrowRecord int identity(1,1), --流水号 StudentID int , --学号 BorrowDate datetime, --借出时间 ReturnDAte Datetime, --归还时间 ... ) 用到的功能有: 1.如果我更改了学生的学号,我希望他的借书记录仍然与这个学生相关(也就是同时更改借书记录表的学号); 2.如果该学生已经毕业,我希望删除他的学号的同时,也删除它的借书记录。 等等。 这时候可以用到触发器。对于1,创建一个Update触发器: Create Trigger truStudent On Student --在Student表中创建触发器 for Update --为什么事件触发 As --事件触发后所要做的事情 if Update(StudentID) begin Update BorrowRecord Set StudentID=i.StudentID From BorrowRecord br , Deleted d ,Inserted i --Deleted和Inserted临时表 Where br.StudentID=d.StudentID end 理解触发器里面的两个临时的表:Deleted , Inserted 。注意Deleted 与Inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”。 一个数据库系统中有两个虚拟表用于存储在表中记录改动的信息,分别是: 虚拟表Inserted 虚拟表Deleted 在表记录新增时 存放新增的记录 不存储记录 修改时 存放用来更新的新记录 存放更新前的记录 删除时 不存储记录 存放被删除的记录 一个Update 的过程可以看作为:生成新的记录到Inserted表,复制旧的记录到Deleted表,然后删除Student记录并写入新纪录。 对于2,创建一个Delete触发器 Create trigger trdStudent On Student for Delete As Delete BorrowRecord From BorrowRecord br , Delted d Where br.StudentID=d.StudentID 从这两个例子我们可以看到了触发器的关键:A.2个临时的表;B.触发机制。 SQL触发器实例2

请列举几种常用的触发器

SQL Server 有三种常规类型的触发器:DML 触发器、DDL 触发器和登录触发器。DML触发器,当数据库中表中的数据发生变化时,包括insert,update,delete任意操作,如果我们对该表写了对应的DML触发器,那么该触发器自动执行;DDL触发器,它是Sql Server2005新增的触发器,主要用于审核与规范对数据库中表,触发器,视图等结构上的操作;登录触发器,登录触发器将为响应 LOGIN 事件而激发存储过程。与 SQL Server 实例建立用户会话时将引发此事件。登录触发器将在登录的身份验证阶段完成之后且用户会话实际建立之前激发。

SQL中触发器有什么作用

触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。SQL3的触发器是一个能由系统自动执行对数据库修改的语句。 触发器与存储过程的唯一区别是触发器不能执行EXECUTE语句调用,而是在用户执行Transact-SQL语句时自动触发执行。 触发器可以查询其他表,而且可以包含复杂的SQL语句。它们主要用于强制服从复杂的业务规则或要求。例如:您可以根据客户当前的帐户状态,控制是否允许插入新订单。触发器也可用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。然而,强制引用完整性的最好方法是在相关表中定义主键和外键约束。如果使用数据库关系图,则可以在表之间创建关系以自动创建外键约束。 SQL Server 包括三种常规类型的触发器:DML 触发器、DDL 触发器和登录触发器。 语法为: CREATE TRIGGER `《databaseName》`.`《triggerName》` 《 》 ON 《tableName》 //dbo代表该表的所有者 FOR EACH ROW BEGIN --do something END 触发器可通过数据库中的相关表实现级联更改,不过,通过级联引用完整性约束可以更有效地执行这些更改。触发器可以强制比用CHECK约束定义的约束更为复杂的约束。与 CHECK 约束不同,触发器可以引用其它表中的列。例如,触发器可以使用另一个表中的 SELECT 比较插入或更新的数据,以及执行其它操作,如修改数据或显示用户定义错误信息。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。一个表中的多个同类触发器(INSERT、UPDATE 或 DELETE)允许采取多个不同的对策以响应同一个修改语句。 约束和触发器在特殊情况下各有优势。触发器的主要好处在于它们可以包含使用 Transact-SQL 代码的复杂处理逻辑。因此,触发器可以支持约束的所有功能;但它在所给出的功能上并不总是最好的方法。实体完整性总应在最低级别上通过索引进行强制,这些索引或是 PRIMARY KEY 和 UNIQUE 约束的一部分,或是在约束之外独立创建的。假设功能可以满足应用程序的功能需求,域完整性应通过 CHECK 约束进行强制,而引用完整性(RI) 则应通过 FOREIGN KEY 约束进行强制。在约束所支持的功能无法满足应用程序的功能要求时,触发器就极为有用。 CHECK 约束只能根据逻辑表达式或同一表中的另一列来验证列值。如果应用程序要求根据另一个表中的列验证列值,则必须使用触发器。约束只能通过标准的系统错误信息传递错误信息。如果应用程序要求使用(或能从中获益)自定义信息和较为复杂的错误处理,则必须使用触发器。 触发器可通过数据库中的相关表实现级联更改;不过,通过级联引用完整性约束可以更有效地执行这些更改。触发器可以禁止或回滚违反引用完整性的更改,从而取消所尝试的数据修改。当更改外键且新值与主键不匹配时,此类触发器就可能发生作用。例如,可以在 titleauthor.title_id 上创建一个插入触发器,使它在新值与 titles.title_id 中的某个值不匹配时回滚一个插入。不过,通常使用 FOREIGN KEY 来达到这个目的。 如果触发器表上存在约束,则在 INSTEAD OF 触发器执行后但在 AFTER 触发器执行前检查这些约束。如果约束破坏,则回滚 INSTEAD OF 触发器操作并且不执行 AFTER 触发器。实例1:insert触发器create trigger tri_inserton studentfor insertasdeclare @student_id char(10)select @student_id=s.student_id fromstudent s inner join inserted ion s.student_id=i.student_idif @student_id=’0000000001’beginraiserror(’不能插入1的学号!’,16,8)rollback tranendgo实例2:update触发器create trigger tri_updateon studentfor updateasif update(student_id)beginraiserror(’学号不能修改!’,16,8)rollback tranendgo实例3:delete触发器示create trigger tri_deleteon studentfor deleteasdeclare @student_id varchar(10)select @student_id=student_id from deletedif @student_id=’admin’beginraiserror(’错误’,16,8)rollback tranend

SQl中触发器怎样执行的

CREATE TRIGGER创建触发器,触发器是一种特殊的存储过程,在用户试图对指定的表执行指定的数据修改语句时自动执行。Microsoft® SQL Server™ 允许为任何给定的 INSERT、UPDATE 或 DELETE 语句创建多个触发器。语法CREATE TRIGGER trigger_name ON { table | view } { { { FOR | AFTER | INSTEAD OF } { } AS sql_statement } } 参数trigger_name是触发器的名称。触发器名称必须符合标识符规则,并且在数据库中必须唯一。可以选择是否指定触发器所有者名称。Table | view是在其上执行触发器的表或视图,有时称为触发器表或触发器视图。可以选择是否指定表或视图的所有者名称。WITH ENCRYPTION加密 syscomments 表中包含 CREATE TRIGGER 语句文本的条目。使用 WITH ENCRYPTION 可防止将触发器作为 SQL Server 复制的一部分发布。AFTER指定触发器只有在触发 SQL 语句中指定的所有操作都已成功执行后才激发。所有的引用级联操作和约束检查也必须成功完成后,才能执行此触发器。如果仅指定 FOR 关键字,则 AFTER 是默认设置。不能在视图上定义 AFTER 触发器。INSTEAD OF指定执行触发器而不是执行触发 SQL 语句,从而替代触发语句的操作。在表或视图上,每个 INSERT、UPDATE 或 DELETE 语句最多可以定义一个 INSTEAD OF 触发器。然而,可以在每个具有 INSTEAD OF 触发器的视图上定义视图。INSTEAD OF 触发器不能在 WITH CHECK OPTION 的可更新视图上定义。如果向指定了 WITH CHECK OPTION 选项的可更新视图添加 INSTEAD OF 触发器,SQL Server 将产生一个错误。用户必须用 ALTER VIEW 删除该选项后才能定义 INSTEAD OF 触发器。{ }是指定在表或视图上执行哪些数据修改语句时将激活触发器的关键字。必须至少指定一个选项。在触发器定义中允许使用以任意顺序组合的这些关键字。如果指定的选项多于一个,需用逗号分隔这些选项。对于 INSTEAD OF 触发器,不允许在具有 ON DELETE 级联操作引用关系的表上使用 DELETE 选项。同样,也不允许在具有 ON UPDATE 级联操作引用关系的表上使用 UPDATE 选项。WITH APPEND指定应该添加现有类型的其它触发器。只有当兼容级别是 65 或更低时,才需要使用该可选子句。如果兼容级别是 70 或更高,则不必使用 WITH APPEND 子句添加现有类型的其它触发器(这是兼容级别设置为 70 或更高的 CREATE TRIGGER 的默认行为)。有关更多信息,请参见 sp_dbcmptlevel。WITH APPEND 不能与 INSTEAD OF 触发器一起使用,或者,如果显式声明 AFTER 触发器,也不能使用该子句。只有当出于向后兼容而指定 FOR 时(没有 INSTEAD OF 或 AFTER),才能使用 WITH APPEND。以后的版本将不支持 WITH APPEND 和 FOR(将被解释为 AFTER)。NOT FOR REPLICATION表示当复制进程更改触发器所涉及的表时,不应执行该触发器。AS是触发器要执行的操作。sql_statement是触发器的条件和操作。触发器条件指定其它准则,以确定 DELETE、INSERT 或 UPDATE 语句是否导致执行触发器操作。当尝试 DELETE、INSERT 或 UPDATE 操作时,Transact-SQL语句中指定的触发器操作将生效。触发器可以包含任意数量和种类的 Transact-SQL 语句。触发器旨在根据数据修改语句检查或更改数据;它不应将数据返回给用户。触发器中的 Transact-SQL 语句常常包含控制流语言。CREATE TRIGGER 语句中使用几个特殊的表: deleted 和 inserted 是逻辑(概念)表。这些表在结构上类似于定义触发器的表(也就是在其中尝试用户操作的表);这些表用于保存用户操作可能更改的行的旧值或新值。例如,若要检索 deleted 表中的所有值,请使用: SELECT *FROM deleted如果兼容级别等于 70,那么在 DELETE、INSERT 或 UPDATE 触发器中,SQL Server 将不允许引用 inserted 和 deleted 表中的 text、ntext 或 image 列。不能访问 inserted 和 deleted 表中的 text、ntext 和 image 值。若要在 INSERT 或 UPDATE 触发器中检索新值,请将 inserted 表与原始更新表联接。当兼容级别是 65 或更低时,对 inserted 或 deleted 表中允许空值的text、ntext 或 image 列,将返回空值;如果这些列不可为空,则返回零长度字符串。 当兼容级别是 80 或更高时,SQL Server 允许在表或视图上通过 INSTEAD OF 触发器更新 text、ntext 或 image 列。n是表示触发器中可以包含多条 Transact-SQL 语句的占位符。对于 IF UPDATE (column) 语句,可以通过重复 UPDATE (column) 子句包含多列。IF UPDATE (column)测试在指定的列上进行的 INSERT 或 UPDATE 操作,不能用于 DELETE 操作。可以指定多列。因为在 ON 子句中指定了表名,所以在 IF UPDATE 子句中的列名前不要包含表名。若要测试在多个列上进行的 INSERT 或 UPDATE 操作,请在第一个操作后指定单独的 UPDATE(column) 子句。在 INSERT 操作中 IF UPDATE 将返回 TRUE 值,因为这些列插入了显式值或隐性 (NULL) 值。说明 IF UPDATE (column) 子句的功能等同于 IF、IF...ELSE 或 WHILE 语句,并且可以使用 BEGIN...END 语句块。有关更多信息,请参见控制流语言。 可以在触发器主体中的任意位置使用 UPDATE (column)。column是要测试 INSERT 或 UPDATE 操作的列名。该列可以是 SQL Server 支持的任何数据类型。但是,计算列不能用于该环境中。有关更多信息,请参见数据类型。 IF (COLUMNS_UPDATED()) 测试是否插入或更新了提及的列,仅用于 INSERT 或 UPDATE 触发器中。COLUMNS_UPDATED 返回 varbinary 位模式,表示插入或更新了表中的哪些列。COLUMNS_UPDATED 函数以从左到右的顺序返回位,最左边的为最不重要的位。最左边的位表示表中的第一列;向右的下一位表示第二列,依此类推。如果在表上创建的触发器包含 8 列以上,则 COLUMNS_UPDATED 返回多个字节,最左边的为最不重要的字节。在 INSERT 操作中 COLUMNS_UPDATED 将对所有列返回 TRUE 值,因为这些列插入了显式值或隐性 (NULL) 值。可以在触发器主体中的任意位置使用 COLUMNS_UPDATED。bitwise_operator是用于比较运算的位运算符。updated_bitmask是整型位掩码,表示实际更新或插入的列。例如,表 t1 包含列 C1、C2、C3、C4 和 C5。假定表 t1 上有 UPDATE 触发器,若要检查列 C2、C3 和 C4 是否都有更新,指定值 14;若要检查是否只有列 C2 有更新,指定值 2。comparison_operator是比较运算符。使用等号 (=) 检查 updated_bitmask 中指定的所有列是否都实际进行了更新。使用大于号 (》) 检查 updated_bitmask 中指定的任一列或某些列是否已更新。column_bitmask是要检查的列的整型位掩码,用来检查是否已更新或插入了这些列。 注释触发器常常用于强制业务规则和数据完整性。SQL Server 通过表创建语句(ALTER TABLE 和 CREATE TABLE)提供声明引用完整性 (DRI);但是 DRI 不提供数据库间的引用完整性。若要强制引用完整性(有关表的主键和外键之间关系的规则),请使用主键和外键约束(ALTER TABLE 和 CREATE TABLE 的 PRIMARY KEY 和 FOREIGN KEY 关键字)。如果触发器表存在约束,则在 INSTEAD OF 触发器执行之后和 AFTER 触发器执行之前检查这些约束。如果违反了约束,则回滚 INSTEAD OF 触发器操作且不执行(激发)AFTER 触发器。可用 sp_settriggerorder 指定表上第一个和最后一个执行的 AFTER 触发器。在表上只能为每个 INSERT、UPDATE 和 DELETE 操作指定一个第一个执行和一个最后一个执行的 AFTER 触发器。如果同一表上还有其它 AFTER 触发器,则这些触发器将以随机顺序执行。如果 ALTER TRIGGER 语句更改了第一个或最后一个触发器,则将除去已修改触发器上设置的第一个或最后一个特性,而且必须用 sp_settriggerorder 重置排序值。只有当触发 SQL 语句(包括所有与更新或删除的对象关联的引用级联操作和约束检查)成功执行后,AFTER 触发器才会执行。AFTER 触发器检查触发语句的运行效果,以及所有由触发语句引起的 UPDATE 和 DELETE 引用级联操作的效果。

谁知道在SQL中什么是触发器,有什么作用

触发器是一种特殊类型的存储过程,不由用户直接调用。创建触发器时会对其进行定义,以便在对特定表或列作特定类型的数据修改时执行。CREATE PROCEDURE 或 CREATE TRIGGER 语句不能跨越批处理。即存储过程或触发器始终只能在一个批处理中创建并编译到一个执行计划中。用触发器还可以强制执行业务规则Microsoft® SQL Server64 2000 提供了两种主要机制来强制业务规则和数据完整性:约束和触发器。触发器是一种特殊类型的存储过程,它在指定的表中的数据发生变化时自动生效。唤醒调用触发器以响应 INSERT、UPDATE 或 DELETE 语句。触发器可以查询其它表,并可以包含复杂的 Transact-SQL 语句。将触发器和触发它的语句作为可在触发器内回滚的单个事务对待。如果检测到严重错误(例如,磁盘空间不足),则整个事务即自动回滚。触发器的优点如下:触发器可通过数据库中的相关表实现级联更改;不过,通过级联引用完整性约束可以更有效地执行这些更改。触发器可以强制比用 CHECK 约束定义的约束更为复杂的约束。与CHECK 约束不同,触发器可以引用其它表中的列。例如,触发器可以使用另一个表中的 SELECT 比较插入或更新的数据,以及执行其它操作,如修改数据或显示用户定义错误信息。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。一个表中的多个同类触发器(INSERT、UPDATE 或 DELETE)允许采取多个不同的对策以响应同一个修改语句。比较触发器与约束约束和触发器在特殊情况下各有优势。触发器的主要好处在于它们可以包含使用 Transact-SQL 代码的复杂处理逻辑。因此,触发器可以支持约束的所有功能;但它在所给出的功能上并不总是最好的方法。实体完整性总应在最低级别上通过索引进行强制,这些索引或是 PRIMARY KEY 和 UNIQUE 约束的一部分,或是在约束之外独立创建的。假设功能可以满足应用程序的功能需求,域完整性应通过 CHECK 约束进行强制,而引用完整性 (RI) 则应通过 FOREIGN KEY 约束进行强制。在约束所支持的功能无法满足应用程序的功能要求时,触发器就极为有用。例如:除非REFERENCES 子句定义了级联引用操作,否则 FOREIGN KEY 约束只能以与另一列中的值完全匹配的值来验证列值。CHECK 约束只能根据逻辑表达式或同一表中的另一列来验证列值。

触发器的应用和用法

1、触发器的定义就是说某个条件成立的时候,触发器里面所定义的语句就会被自动的执行。因此触发器不需要人为的去调用,也不能调用。

2、触发器的触发条件其实在定义的时候就已经设定好了。

3、触发器可以分为语句级触发器和行级触发器。简单的说就是语句级的触发器可以在某些语句执行前或执行后被触发。而行级触发器则是在定义的了触发的表中的行数据改变时就会被触发一次。

4、具体举例:

1)、 在一个表中定义语句级的触发器,当这个表被删除时,程序就会自动执行触发器里面定义的操作过程。这个【删除表的操作】就是触发器执行的条件。

2)、 在一个表中定义行级的触发器,那当【这个表中一行数据发生变化】的时候,比如删除了一行记录,那触发器也会被自动执行了。

5、创建触发器语句

6、触发器作用(应用场景)

(1)数据确认

(2)实施复杂的安全性检查

(3)做日志记录,跟踪表上所做的数据操作等

(4)数据的备份和同步;

扩展资料

一、触发器介绍 

1、数据库触发器是一个与表相关联的、存储的 PL/SQL 程序。每当一个特定的数据操作语句(Insert,update,delete)在指定的表上发出时,Oracle 自动地执行触发器中定义的语句序 

列。 

2、触发器的作用 

触发器可用于: 

(1)数据确认 

(2)实施复杂的安全性检查 

(3)做审计,跟踪表上所做的数据操作等 

(4)数据的备份和同步 

3、触发器的类型 

(1)语句级触发器 

在指定的操作语句操作之前或之后执行一次,不管这条语句影响了多少行 。 

(2)行级触发器(FOR EACH ROW) 

触发语句作用的每一条记录都被触发。在行级触发器中使用 old 和 new 伪记录变量,识别值的状态。

4、创建触发器的语法 

CREATE TRIGGER 触发器名 

{BEFORE |AFTER} 

{DELETE | INSERT | UPDATE } 

ON 表名 

 

参考资料

百度百科-Oracle触发器

数据库中的“触发器”是什么意思

在SQL中,名词触发器指“在数据库中为响应一个特殊表格中的某些事件而自动执行的程序代码。”(Wikipedia)说得简单一些,它是在一个特殊的数据库事件,如INSERT或DELETE发生时,自动激活的一段代码。触发器可方便地用于日志记录、对单个表格到其他链接式表格进行自动的“层叠式”更改、或保证对表格关系进行自动更新。当一个新整数值增加到数据库域中时,自动更新运行的总数的代码段是一个触发器。自动记录对一个特殊数据库表格所作更改的SQL命令块也是一个触发器实例。 参考: http://www.nmzol.com/ns/2007/200705/2007-05-05/ns_20070505214010_16672.html

如果你还想了解更多这方面的信息,记得收藏关注本站。

如何使用Python实现定时任务和周期性任务?照明定时控制方式实例

本文编辑:admin

更多文章:


xdr屏幕和oled(iphone13屏幕m10材质)

xdr屏幕和oled(iphone13屏幕m10材质)

本文目录iphone13屏幕m10材质LCD屏幕和OLED屏幕,哪个好xdr和oled屏幕区别OLED、AMOLED、LCD这三种屏幕的优缺点有哪些呢xdr和oled屏幕区别是什么OLED屏幕和LCD屏幕究竟哪个好手机电竞屏和oled屏哪个

2024年6月6日 22:05

12寸显示屏多大(12英寸是多少厘米显示屏12寸是多少)

12寸显示屏多大(12英寸是多少厘米显示屏12寸是多少)

本文目录12英寸是多少厘米显示屏12寸是多少12寸的液晶显示器的长和宽为多少(不要比例)12寸显示器是多少厘米12寸屏幕是多大的12英寸是多少厘米显示屏12寸是多少12英寸是30.48厘米(cm) 。显示屏的尺寸指显像管的对角线尺寸,通常用

2024年7月12日 00:55

希捷官方恢复数据收费(希捷 1T 硬盘,有异响,认不到盘,要恢复数据,请问费用几多)

希捷官方恢复数据收费(希捷 1T 硬盘,有异响,认不到盘,要恢复数据,请问费用几多)

本文目录希捷 1T 硬盘,有异响,认不到盘,要恢复数据,请问费用几多希捷酷狼Pro的数据恢复服务怎么回事500G希捷硬盘坏了数据恢复需要多少钱有知道希捷酷狼Pro的数据恢复服务吗希捷官方数据恢复服务靠谱吗希捷 1T 硬盘,有异响,认不到盘,

2024年4月13日 20:30

戴尔n5110哪一年上市(戴尔n5110是哪一年产的)

戴尔n5110哪一年上市(戴尔n5110是哪一年产的)

本文目录戴尔n5110是哪一年产的戴尔Inspiron灵越15R N5110(Ins15RR-879)什么时候上市戴尔N5110(i3的)配置及价格介绍dell n5110哪年出的戴尔n5110是哪一年产的戴尔Inspiron 灵越 15R

2023年10月20日 04:16

gt740m什么水平(GT 740M相当于什么水平的台式显卡)

gt740m什么水平(GT 740M相当于什么水平的台式显卡)

本文目录GT 740M相当于什么水平的台式显卡笔记本的显卡GeForce GT740M的性能和台式机显卡的哪个型号水平相当GT 740M相当于什么水平的台式显卡记本的显卡GeForce GT740M的性能和台式机显卡的GT630型号水平相当

2023年5月31日 06:30

thinkvision显示器怎么拆(IBM ThinkVision 15寸这种显示器没卡子怎么拆下来底座)

thinkvision显示器怎么拆(IBM ThinkVision 15寸这种显示器没卡子怎么拆下来底座)

本文目录IBM ThinkVision 15寸这种显示器没卡子怎么拆下来底座联想thinkvision l2250pwd怎样拆机我想知道联想这个thinkvision后面怎么安装!联想thinkvision L2240pwD显示器怎么拆IB

2024年5月28日 23:59

计算机价格行情(请高手配台电脑,)

计算机价格行情(请高手配台电脑,)

本文目录请高手配台电脑,济南市场上网吧用的计算机价格怎么个行情啊求电脑装机高性价比配置(按本月行情价~) 价格在2500到3000的~现在买一台电脑的市场价的多少学长,你好:帮忙做一下微机作业去计算机市场了解计算机行情,并写一个价格在400

2024年6月5日 10:41

x200底座(thinkpad X200加底座和T400哪个更适合我吗)

x200底座(thinkpad X200加底座和T400哪个更适合我吗)

本文目录thinkpad X200加底座和T400哪个更适合我吗X200底座扩展坞左上角有个电池仓怎么用Lenovo x200配底座 是否可以接2个外置显示器thinkpad x200(扩展槽\超级底座或者叫外置光盘机)质量怎么样笔记本电脑

2023年7月26日 23:50

联想2008年的台式机(08年的联想老机,台式机怎么恢复BOIS设置)

联想2008年的台式机(08年的联想老机,台式机怎么恢复BOIS设置)

本文目录08年的联想老机,台式机怎么恢复BOIS设置08年买的联想台式机,家悦系列的,但是不知道什么型号,能加内存条吗 配置如下:求助!08年买的联想家悦系列台式电脑升级配置联想08年电脑升级配置08年的联想台式电脑装系统哪个好2008年的

2024年3月29日 21:55

戴尔外星人17r4(外星人17r4独显不一样)

戴尔外星人17r4(外星人17r4独显不一样)

本文目录外星人17r4独显不一样现在买一台二手的外星人17r4值吗如何评价外星人m17r4外星人17r4内存支持多少频率这款外星人笔记本alienware17-R4当年国行价格多少配置如下:外星人17r4怎么调灯光戴尔客服可以买到外星人17

2024年6月12日 14:29

17年苹果笔记本(17年的macbook苹果笔记本有sir吗)

17年苹果笔记本(17年的macbook苹果笔记本有sir吗)

本文目录17年的macbook苹果笔记本有sir吗17年苹果笔记本胶条掉漆17款macbookproMPTR2适合打游戏么MacBook Pro 17年的版本可以支持4K 120输出吗macbookpro15寸i7是哪一年的17款MacBo

2024年7月20日 05:06

联想thinkpadtablet(联想小黑板(ThinkPad Tablet)是不是非得关机充电)

联想thinkpadtablet(联想小黑板(ThinkPad Tablet)是不是非得关机充电)

大家好,今天小编来为大家解答以下的问题,关于联想thinkpadtablet,联想小黑板(ThinkPad Tablet)是不是非得关机充电这个很多人还不知道,现在让我们一起来看看吧!本文目录联想小黑板(ThinkPad Tablet)是不

2024年10月23日 03:30

移动硬盘误删能恢复吗(u盘删掉的文件能恢复吗 u盘误删除文件能不能直接恢复呢)

移动硬盘误删能恢复吗(u盘删掉的文件能恢复吗 u盘误删除文件能不能直接恢复呢)

本文目录u盘删掉的文件能恢复吗 u盘误删除文件能不能直接恢复呢移动硬盘里的照片误删了,可以恢复吗怎么恢复移动硬盘如何恢复移动硬盘文件删除如何恢复 移动硬盘文件删除怎么恢复u盘删掉的文件能恢复吗 u盘误删除文件能不能直接恢复呢1、u盘误删除文

2023年7月22日 11:20

戴尔笔记本游戏(戴尔笔记本有没有自带的小游戏)

戴尔笔记本游戏(戴尔笔记本有没有自带的小游戏)

本文目录戴尔笔记本有没有自带的小游戏戴尔笔记本游戏版本i5系列的怎么多选按ctrl+c没什么反应别的电脑就可以多选戴尔游戏笔记本和普通的笔记本区别是什么哪个更好一些戴尔灵越笔记本是游戏本吗它玩3D网游卡吗还有就是哪款比较好戴尔笔记本有没有自

2023年6月15日 02:30

机械革命code10(机械革命怎么强制关机)

机械革命code10(机械革命怎么强制关机)

本文目录机械革命怎么强制关机机械革命(MECHREVO)Code01 15.6英寸(R7-4800H 16G好还是华硕灵耀14机械革命code10和F6怎么选机械革命code10值不值得等机械革命怎么装原版win10系统机械革命win10更

2023年7月5日 03:40

索尼a6000使用技巧(索尼微单A6000如何手动聚焦)

索尼a6000使用技巧(索尼微单A6000如何手动聚焦)

本文目录索尼微单A6000如何手动聚焦索尼微单a6000对焦模式怎么设置好索尼a6000连拍怎么设置索尼a6000快门怎么设置索尼微单A6000如何手动聚焦索尼微单A6000手动聚焦的办法:在AF状态下,不要用力转动对焦环,镜头设成MF即手

2024年7月24日 14:03

gtx550ti跑分(gtx550ti和gtx660的显卡的性能相差多少)

gtx550ti跑分(gtx550ti和gtx660的显卡的性能相差多少)

本文目录gtx550ti和gtx660的显卡的性能相差多少淘宝网购买的一张影驰550ti重炮手版显卡512mb显存二手的9成新鲁大师跑分有25000gtx550ti和gtx660的显卡的性能相差多少差不多有15%-20%的差距,如果对游戏特

2023年10月11日 10:00

gtx960什么水平(笔记本显卡gtx960m是什么水平)

gtx960什么水平(笔记本显卡gtx960m是什么水平)

本文目录笔记本显卡gtx960m是什么水平大家,某宝上网吧拆机卡gtx960怎么样笔记本的gtx960m显卡怎么样gtx960-2g玩游戏怎么样GTX960怎么样和HD 7850比呢GTX960是什么水平的显卡笔记本显卡gtx960m是什么

2024年3月12日 11:30

电脑报价单今日(电脑上的报价单怎么发到微信上)

电脑报价单今日(电脑上的报价单怎么发到微信上)

大家好,关于电脑报价单今日很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于电脑上的报价单怎么发到微信上的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本文目录电

2024年10月18日 21:15

显卡可以随便换吗(什么是显卡 显卡可以随意更换吗)

显卡可以随便换吗(什么是显卡 显卡可以随意更换吗)

本文目录什么是显卡 显卡可以随意更换吗电脑可以换显卡吗显卡可以换吗笔记本的独立显卡可以换吗笔记本电脑上的独立显卡可以更换吗电脑的显卡可以随便换吗电脑的显卡可以随便换吗换显卡对电脑有什么影响是不是原装显卡才是最好的显卡可以随便装吗台式电脑显卡

2023年5月5日 22:45

近期文章

本站热文

电脑包尺寸对照表(电脑包要多大)
2024-07-23 11:15:58 浏览:3883
e10000(皖E10000是什么车)
2024-07-17 11:22:25 浏览:3506
ati radeon hd 5650(电脑的显卡是ATI Mobility Radeon HD 5650 (MADION PRO) ( 1 GB ) 这个显卡)
2024-07-07 05:01:37 浏览:3100
华为mate20pro版本区别(mate20pro有必要买ud版吗)
2024-07-24 08:26:42 浏览:2630
ipad买蜂窝版还是wifi版(ipad air 5买蜂窝好不好)
2024-07-17 14:35:19 浏览:2237
vivo y3配置参数(vivoy3参数是什么)
2024-07-16 07:07:06 浏览:2071
标签列表

热门搜索