Delen via


DML-triggers wijzigen of de naam ervan wijzigen

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Dit artikel beschrijft hoe u een DML-trigger in SQL Server kunt wijzigen of hernoemen met behulp van SQL Server Management Studio of Transact-SQL.

Beperkingen

Wanneer u de naam van een trigger wijzigt, moet de trigger zich in de huidige database bevinden en moet de nieuwe naam voldoen aan de regels voor id's.

Aanbevelingen

Vermijd het gebruik van de sp_rename opgeslagen procedure om de naam van een trigger te wijzigen. Als u een deel van een objectnaam wijzigt, kunnen scripts en opgeslagen procedures worden onderbroken. Als u de naam van een trigger wijzigt, wordt de naam van de bijbehorende objectnaam niet gewijzigd in de definitiekolom van de sys.sql_modules catalogusweergave. U wordt aangeraden in plaats daarvan de trigger te verwijderen en opnieuw te maken.

Als u de naam van een object waarnaar wordt verwezen door een DML-trigger wijzigt, moet u de trigger wijzigen zodat de tekst de nieuwe naam weerspiegelt. Voordat u de naam van een object wijzigt, geeft u daarom eerst de afhankelijkheden van het object weer om te bepalen of de voorgestelde wijziging van invloed is op triggers.

Een DML-trigger kan ook worden gewijzigd om de definitie te versleutelen.

Als u de afhankelijkheden van een trigger wilt weergeven, kunt u SQL Server Management Studio of de volgende functie- en catalogusweergaven gebruiken:

Machtigingen

Als u een DML-trigger wilt wijzigen, hebt u ALTER-rechten nodig voor de tabel of weergave waarvoor de trigger is gedefinieerd.

SQL Server Management Studio gebruiken

Een DML-trigger wijzigen

  1. Maak in Objectverkennerverbinding met een exemplaar van de Database Engine en vouw dan dat exemplaar uit.

  2. Vouw de gewenste database uit, vouw tabellenuit en vouw vervolgens de tabel uit die de trigger bevat die u wilt wijzigen.

  3. Vouw triggersuit, klik met de rechtermuisknop op de trigger die u wilt wijzigen en selecteer vervolgens Wijzigen.

  4. Wijzig de trigger en selecteer vervolgens Uitvoeren.

De naam van een DML-trigger wijzigen

  1. de DML-trigger verwijderen of uitschakelen die u de naam wilt wijzigen.
  2. Maak de nieuwe DML-triggeren geef de nieuwe naam op.

Gebruik Transact-SQL

Een trigger wijzigen met ALTER TRIGGER

  1. Maak verbinding met de database-engine.

  2. Selecteer in de standaardbalk Nieuwe query.

  3. Kopieer en plak het volgende voorbeeld in de query. Voer het eerste voorbeeld uit om een DML-trigger te maken waarmee een door de gebruiker gedefinieerd bericht naar de client wordt afgedrukt wanneer een gebruiker probeert gegevens toe te voegen aan of te wijzigen in de SalesPersonQuotaHistory tabel. Voer de opdracht ALTER TRIGGER uit om de trigger te wijzigen zodat deze alleen wordt geactiveerd bij INSERT-activiteiten. Deze trigger is handig omdat de gebruiker eraan herinnert dat rijen in deze tabel worden bijgewerkt of ingevoegd om ook de Compensation afdeling op de hoogte te stellen.

    1. Maak een trigger.

      USE AdventureWorks2022;
      GO
      
      IF OBJECT_ID(N'Sales.bonus_reminder', N'TR') IS NOT NULL
          DROP TRIGGER Sales.bonus_reminder;
      GO
      
      CREATE TRIGGER Sales.bonus_reminder
          ON Sales.SalesPersonQuotaHistory WITH ENCRYPTION
          AFTER INSERT, UPDATE
      AS RAISERROR ('Notify Compensation', 16, 10);
      GO
      
    2. Wijzig de trigger.

      USE AdventureWorks2022;
      GO
      ALTER TRIGGER Sales.bonus_reminder
      ON Sales.SalesPersonQuotaHistory
      AFTER INSERT
      AS RAISERROR ('Notify Compensation', 16, 10);
      GO
      

De naam van een trigger wijzigen met DROP TRIGGER en CREATE TRIGGER

  1. Maak verbinding met de database-engine.

  2. Selecteer in de standaardbalk Nieuwe query.

  3. Kopieer en plak het volgende voorbeeld in het queryvenster en selecteer uitvoeren. In dit voorbeeld worden de DROP TRIGGER- en CREATE TRIGGER instructies gebruikt om de naam van de Sales.bonus_reminder-trigger te wijzigen in Sales.bonus_reminder_2.

USE AdventureWorks2022;
GO

IF OBJECT_ID(N'Sales.bonus_reminder', N'TR') IS NOT NULL
    DROP TRIGGER Sales.bonus_reminder;
GO

CREATE TRIGGER Sales.bonus_reminder_2
    ON Sales.SalesPersonQuotaHistory WITH ENCRYPTION
    AFTER INSERT, UPDATE
AS RAISERROR ('Notify Compensation', 16, 10);
GO