触发器(Trigger)(四)

设计After触发器

在了解触发器及其种类、作用、工作原理之后,下面详细讲述一下要怎么去设计及建立触发器。

 设计简单的After触发器

下面用实例设计一个简单的After Insert触发器,这个触发器的作用是:在插入一条记录的时候,发出又添加了一种产品的友好提示。

1)启动Management Studio,登录到指定的服务器上。

2)在如图1所示界面的【对象资源管理器】下选择【数据库】,定位到【Northwind】数据库à【表】àdbo.产品】,并找到【触发器】项。

1 定位到触发器

3)右击【触发器】,在弹出的快捷菜单中选择【新建触发器】选项,此时会自动弹出【查询编辑器】对话框,在【查询编辑器】的编辑区里SQL Server已经预写入了一些建立触发器相关的SQL语句,如图11.2所示。

2 SQL Server 2005预写的触发器代码

4)修改【查询编辑器】里的代码,将从“CREATE”开始到“GO”结束的代码改为以下代码:

CREATE TRIGGER 产品_Insert

   ON  产品

   AFTER INSERT

AS

BEGIN

         print '又添加了一种产品'

END

GO

如果有兴趣的话,也可以去修改一下如图11.2中绿色部分的版权信息。

5)单击工具栏中的【分析】按钮 ,检查一下是否语法有错,如图11.3所示,如果在下面的【结果】对话框中出现命令已成功完成,则表示语法没有错误。

3 检查语法

6)语法检查无误后,单击【执行】按钮,生成触发器。

7)关掉查询编辑器对话框,刷新一下触发器对话框,可以看到刚才建立的【产品_Insert】触发器,如图4所示。

4 建好的触发器

建立After Update触发器、After Delete触发器和建立After Insert触发器的步骤一致,不同的地方是把上面的SQL语句中的AFTER INSERT分别改为AFTER UPDATEAFTER DELETE即可,如下所示,有兴趣的读者可以自行测试。

CREATE TRIGGER 产品_Update

   ON  产品

   AFTER UPDATE

AS

BEGIN

         print '有一种产品更改了'

END

GO

CREATE TRIGGER 产品_Delete

   ON  产品

   AFTER DELETE

AS

BEGIN

         print '又删除了一种产品'

END

GO

  测试触发器功能

建好After Insert触发器之后,现在来测试一下触发器是怎么样被激活的。

1)在Management Studio里新建一个查询,在弹出的【查询编辑器】对话框里输入以下代码:

INSERT INTO 产品(产品名称) VALUES ('大苹果')

2)单击【执行】按钮,可以看到【消息】对话框里显示出一句提示:又添加了一种产品,如图11.5所示,这说明,After Insert触发器被激活,并运行成功了。

5 查看触发器的运行结果

而如果在【查询编辑器】里执行的不是一个Insert语句,而是一个Delete语句的话,After Insert触发器将不会被激活。如在【查询编辑器】输入以下语句:

DELETE FROM 产品 WHERE (产品名称= '大苹果')

单击【执行】按钮,在【消息】对话框里只显示了一句“(1行受影响)”的提示,而没有又添加了一种产品的提示,如图6所示。这是因为Delete语句是不能激活After Insert触发器,所以After Insert触发器里的“print ‘又添加了一种产品’”语句并没有执行。

6 执行删除语句不会激活After Insert触发器

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中的触发器trigger)是一段代码,它会在特定事件发生时自动执行。触发器通常用于响应数据库中的特定事件,例如插入、更新或删除操作。在这些事件发生时,触发器会自动执行指定的代码。 在Java中,触发器通常与数据库结合使用。例如,您可以创建一个触发器,以便在用户向数据库中的表中插入新行时自动更新另一个表。触发器可以帮助您确保数据的一致性和完整性,并简化编程工作。 要创建触发器,请使用Java的数据库API(如JDBC)来连接到您的数据库。然后,您可以使用SQL语句来定义要执行的触发器代码,并将其附加到特定的数据库事件上。例如,以下SQL语句将创建一个名为“java_trigger”的触发器,以在INSERT操作发生时自动执行: ``` CREATE TRIGGER java_trigger AFTER INSERT ON my_table FOR EACH ROW BEGIN // 触发器代码 END; ``` 在这个例子中,“my_table”是您要监视的表的名称。您可以替换它为您自己的表名,并根据需要修改触发器代码。在您定义触发器后,每当有新行插入到“my_table”中时,触发器代码将自动执行。 请注意,数据库触发器可以有不同的类型和触发时间。例如,您可以定义BEFORE或AFTER触发器,以在数据库事件发生之前或之后执行代码。您还可以定义FOR EACH ROW或FOR EACH STATEMENT触发器,以指定触发器作用范围。要了解有关Java触发器的详细信息,请参阅Java数据库API的文档和教程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值