文档详情

北京理工大学计算机学院数据库开发实验报告2.docx

发布:2018-05-22约5.02千字共10页下载文档
文本预览下载声明
数据库系统开发实验报告实验二:触发器的创建与测试内容检查订单明细表Sales.SalesOrderDetail中的信息,如果修改记录中的产品单价UnitPrice大于产品公开报价(Production.Product.ListPrice),则不能进行修改并抛出错误信息,否则,进行修改并将修改的有关信息写到Production.ProuctUpdateLog表中。要求使用RAISEERROR抛出错误信息。修改信息记录表Production.ProductUpdateLog的内容:记录编号、订单编号、订单明细编号、产品编号、产品的公开报价、修改前产品的单价、修改后产品的单价、修改者的登录名。使用存储过程完成该功能,并在存储过程中调用该存储过程。给出触发器和存储过程的源代码和简要的说明(可以在代码中使用注释进行说明)。设计触发器测试方案并给出测试的命令和结果,必要时可对测试结果进行分析。实验内容:首先,用Windows系统下的登录,附加数据库AdventureWorks按照实验内容,我们先来查询一下AdventureWorks中的订单明细表Sales.SalesOrderDetail。语句:USEAdventureWorksGOSELECT*FROMSales.SalesOrderDetailGO查询结果如下:根据实验内容,创建名为Production.ProuctUpdateLog(产品更新日志)的表。其属性分别为记录编号,订单编号,订单明细编号,产品编号,产品公开报价,修改前产品的单价,修改后产品单价,修改者登录名。语句:/*记录编号,订单编号,订单明细编号,产品编号,产品公开报价,修改前产品的单价,修改后产品单价,修改者登录名*/USEAdventureWorksGOCREATETABLEProduction.ProductUpdateLog(记录编号intIDENTITYprimarykey,订单编号intnotnull,订单明细编号intnotnull,产品编号intnotnull,产品公开报价money,修改前产品单价money,修改后产品单价money,修改者登录名nvarchar(50) not null)GO运行结果如下:将修改者登录名设为不准为空,同时用IDENTITY关键字设主键“记录编号”为自动增长。表格Production.ProductUpdateLog创建成功,之后查询以检验其创建成功。题目要求,当更新产品价格满足不大于公开报价条件时,更新表格Sales.SalesOrderDetail,并且向表Production.ProductUpdateLog中插入一条记录。要求此功能用存储过程实现。下面创建一个名为Production.Record_Update的存储过程,以完成向表Production.ProductUpdateLog中插入记录的功能。语句:USEAdventureWorksGOIFOBJECT_ID(Production.Record_Update_Price,P)ISNOTNULLDROPPROCEDUREProduction.Record_Update_PriceGO--如果数据库中存在名称为Production.Record_Update_Price的存储过程--则删除该存储过程--创建存储过程Production.Record_Update_Price,它有个参数,--其中@SalesorderID 表示订单编号,@SalesorderdetailID 表示订单明细编号--@ProductID 表示产品编号,@PublicPrice 表示公开报价--@PrePrice 表示修改前价格,@PostPrice 表示修改后报价--@Operator 表示修改者登录名CREATEPROCEDUREProduction.Record_Update_Price--@RecordID int,--因为表格ProductUpdateLog的主键设为IDENTITY性质,不用传参@SalesorderIDint,@SalesorderdetailIDint,@ProductIDint,@PublicPricemoney,@PrePricemoney,@PostPricemoney,@Operatornvarchar(50)AS--向表ProductUpdateLog插入一条记录,参数纷纷对应INSERTINTOProduction.ProductUpdateLog(--记录编号,订单编号,订单明细编号,产品编号,产品公开报价,修改前产品单价,修改后产品单价,修改者登录名)VALUES(--@RecordID,@SalesorderID,@SalesorderdetailID,@ProductID,@P
显示全部
相似文档