在嵌套的 TRY...CATCH 中使用错误函数
您的电动自行车门店刚到了一批新车,需要更新库存。
您打算登记:收到 2 辆 Trek Powerfly 5 - 2018,每辆 $3499.99;以及 3 辆 New Power K- 2018,每辆 $1999.99。
您尝试将这些产品插入数据库,因为您认为它们是新型号。不过您忘了,第一款车已经在库存中。好在 products 表有一个约束,要求每个产品名称都唯一。
您准备了一段脚本来控制插入时可能出现的错误。您还希望把可能的错误记录到名为 errors 的表中;如果在插入错误记录时发生故障,则显示错误编号和错误消息。
本练习是课程的一部分
SQL Server 中的事务与错误处理
练习说明
- 用一个
CATCH块包裹错误处理。 - 在
errors表中插入'Error inserting a product',并使用另一个TRY块包裹这次插入。 - 用另一个
CATCH块包裹该嵌套的错误处理。 - 在内部的
CATCH块中选择错误行号和错误消息。
交互式实操练习
通过完成这段示例代码来试试这个练习。
BEGIN TRY
INSERT INTO products (product_name, stock, price)
VALUES ('Trek Powerfly 5 - 2018', 2, 3499.99),
('New Power K- 2018', 3, 1999.99)
END TRY
-- Set up the outer CATCH block
___ ___
SELECT 'An error occurred inserting the product!';
-- Set up the inner TRY block
___ ___
-- Insert the error
INSERT INTO ___
VALUES ('Error inserting a product');
___ ___
-- Set up the inner CATCH block
___ ___
-- Show number and message error
SELECT
___ AS line,
___ AS message;
___ ___
___ ___