在存储过程中创建触发器

Neh*_*att 4 t-sql sql-server triggers stored-procedures

我正在尝试在存储过程中创建一个触发器,因为当删除表时它将被删除。

我收到错误并且无法执行它。

CREATE PROCEDURE EC5Trigger2
AS
  CREATE TRIGGER trVendorProductsPST
  ON VendorProducts
  FOR INSERT
  AS
  BEGIN
    SET NOCOUNT ON

    DECLARE  @SKU VARCHAR(64)
    SELECT @SKU = I.SKU FROM inserted AS I

    INSERT INTO ProductStockTransactions (SKU, stockingCode)
    VALUES (@SKU, 'A')
  END

  RETURN 0
Run Code Online (Sandbox Code Playgroud)

Dal*_*e K 8

以下是如何使用动态 SQL 在存储过程中创建触发器,这是执行此操作的唯一方法。

CREATE PROCEDURE EC5Trigger2
AS
BEGIN
  SET NOCOUNT ON;

  DECLARE @TriggerCode NVARCHAR(max);

  SET @TriggerCode = 'CREATE TRIGGER trVendorProductsPST
    ON VendorProducts
    FOR INSERT
    AS
    BEGIN
      SET NOCOUNT ON
      DECLARE @SKU VARCHAR(64)
      SELECT @SKU = I.SKU from INSERTED as I

      INSERT INTO ProductStockTransactions (SKU, stockingCode)
        VALUES (@SKU, ''A'')
    END';

  EXEC(@TriggerCode);

  RETURN 0;
END;
Run Code Online (Sandbox Code Playgroud)