sql - 如何在 SQL Server 中使用触发器?
问题描述
我正在使用AdventureWorks2012
数据库。我创建了一个存储过程,Production.Product
仅当产品成本大于 100 时,才使用给定产品 ID 的表中的新名称更新产品
CREATE PROCEDURE USP_PRODUCTRENAME
(@NAME NVARCHAR(50),
@PRODUCTID INT,
@STANDARDCOST NUMERIC)
AS
BEGIN
UPDATE Production.Product
SET Name = @NAME
WHERE ProductID = 515 AND StandardCost >= 100;
END;
在这里,即使我通过 cost < 100,产品名称也会发生变化。
我在这里做错了什么?
解决方案
CREATE PROCEDURE PROD_PRODUCT_RENAME(@NAME NVARCHAR(50), @PRODUCTID INT, @STANDARDCOST NUMERIC)
AS
IF @STANDARDCOST <=100
BEGIN
RAISERROR(' Cannot Update Product Name as cost should be greater than 100',16,1)
END
ELSE
BEGIN
SET NOCOUNT ON;
UPDATE Production.Product
SET Name = @NAME
WHERE ProductID = @PRODUCTID
AND StandardCost > @STANDARDCOST;
END;
这就是我想出的。希望是正确的答案
推荐阅读
- java - 如何计算文本文件中有多少男性和女性?
- java - 如何让 jenkins 仅在部署到 UAT 时运行集成测试?
- r - 如何控制 Rmarkdown pdf 文档中表格的位置
- pandas - 关于系列和数据框(熊猫)之间区别的混淆
- couchdb - 如何更改 Hyperledger Fabric 的 CouchDB 版本?
- css - 阻止 INTERNET EXPLORER 打印白色文本灰色
- gradle - SonarQube 在 detekt gradle 插件中是否有 gradle 设置以在远程主机上而不是在文件中生成报告
- multithreading - 使用 Clojure 安排每天午夜调用函数的最简单方法是什么?
- jwt - Azure AD SPA 应用程序的“IDX10511:签名验证失败”
- c# - 在 C# 中动态创建可链接对象