1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 如何使用SQL Server INSTEAD-OF触发器

如何使用SQL Server INSTEAD-OF触发器

时间:2020-02-27 10:35:54

相关推荐

如何使用SQL Server INSTEAD-OF触发器

为了更好地说明可更新视图概念,我们提供一个示例。在本例中,我们设计一个产品表(记录产品),一个购买表(记录购买)。Listing A包含了创建表的脚本,运行此脚本后则得到示例中所要用到的表。运行Listing B脚本向表中添加数据。

现在表中已经有数据了,我可以为这些表创建一些有意义的视图。请查看Listing C。

这是个典型的产品水平的视图。它联合了数据库中的两个表,使得数据简单化了。但是,对于数据提取,使用视图则没有什么优势。在视图上附上INSTEAD-OF触发器后,则允许修改表,但是我不需要直接修改表中的数据。我使用Listing D中的代码在vw_ProductPurchases视图上创建一个INSTEAD-OF触发器。

请注意此INSTEAD OF触发器的声明。SQL Server创建的默认的触发器为AFTER触发器,因此,必须在触发器定义中指定INSTEAD OF子句。

触发器的第一条语句是“check”语句。本例中我使用此语句检测INSERTED表以确保显示ProductID字段,并且保证提供显示其他PurchasePrice 或 ProductPrice字段。

如果必要的数据通过INSERT语句都插入到视图中,则触发器将插入指定的值到数据表。下面即是视图的INSERT语句。 INSERT INTO vw_ProductPurchases(ProductID, PurchasePrice) VALUES(1, 700)

INSERT语句提供了有效的ProductID和PurchasePrice,这意味着新记录插入到Purchases表。

结论

INSTEAD-OF触发器具有强大的功能和灵活性。如果系统不大,使用视图系统提取数据大纲能够极大保护数据库程序。

上面的例子很简单,系统中所用到的复杂的触发器需要考虑安全性问题、时间开销和其他限制。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。