首页 > 解决方案 > 如何在 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,产品名称也会发生变化。

我在这里做错了什么?

标签: sqltriggerssql-server-2012sql-server-2014

解决方案


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;

这就是我想出的。希望是正确的答案


推荐阅读