Bagikan melalui


Mengubah atau Mengganti Nama Pemicu DML

Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance

Artikel ini menjelaskan cara mengubah atau mengganti nama pemicu DML di SQL Server dengan menggunakan SQL Server Management Studio atau Transact-SQL.

Batasan

Saat Anda mengganti nama pemicu, pemicu harus berada di database saat ini, dan nama baru harus mengikuti aturan untuk pengidentifikasi.

Rekomendasi

Hindari menggunakan prosedur tersimpan sp_rename untuk mengganti nama pemicu. Mengubah bagian mana pun dari nama objek dapat merusak skrip dan prosedur tersimpan. Mengganti nama pemicu tidak mengubah nama objek yang sesuai di kolom definisi tampilan katalog sys.sql_modules . Kami menyarankan agar Anda menghilangkan dan membuat ulang pemicu sebagai gantinya.

Jika Anda mengubah nama objek yang dirujuk oleh pemicu DML, Anda harus memodifikasi pemicu sehingga teksnya mencerminkan nama baru. Oleh karena itu, sebelum Anda mengganti nama objek, tampilkan dependensi objek terlebih dahulu untuk menentukan apakah perubahan yang diusulkan memengaruhi pemicu apa pun.

Pemicu DML juga dapat dimodifikasi untuk mengenkripsi definisinya.

Untuk melihat dependensi pemicu, Anda dapat menggunakan SQL Server Management Studio atau tampilan fungsi dan katalog berikut:

Izin

Untuk mengubah pemicu DML memerlukan ALTER izin pada tabel atau tampilan tempat pemicu ditentukan.

Menggunakan SQL Server Management Studio

Mengubah pemicu DML

  1. Di Object Explorer, sambungkan ke instans Mesin Database lalu perluas instans tersebut.

  2. Perluas database yang Anda inginkan, perluas Tabel, lalu perluas tabel yang berisi pemicu yang ingin Anda ubah.

  3. Perluas Pemicu, klik kanan pemicu untuk memodifikasi, lalu pilih Ubah.

  4. Ubah pemicu, lalu pilih Jalankan.

Mengganti nama pemicu DML

  1. Hapus atau nonaktifkan pemicu DML yang ingin Anda ganti namanya.
  2. Buat pemicu DML baru, menentukan nama baru.

Menggunakan Transact-SQL

Mengubah pemicu menggunakan ALTER TRIGGER

  1. Sambungkan ke Mesin Database.

  2. Dari bilah Standar, pilih Kueri Baru.

  3. Salin dan tempel contoh berikut ke dalam kueri. Jalankan contoh pertama untuk membuat pemicu DML yang mencetak pesan yang ditentukan pengguna ke klien saat pengguna mencoba menambahkan atau mengubah data dalam SalesPersonQuotaHistory tabel. Jalankan pernyataan ALTER TRIGGER untuk memodifikasi pemicu agar diaktifkan hanya pada INSERT aktivitas. Pemicu ini berguna karena mengingatkan pengguna bahwa memperbarui atau menyisipkan baris ke dalam tabel ini untuk juga memberi tahu Compensation departemen.

    1. Buat pemicu.

      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. Ubah pemicu.

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

Mengganti nama pemicu menggunakan DROP TRIGGER dan ALTER TRIGGER

  1. Sambungkan ke Mesin Database.

  2. Dari bilah Standar, pilih Kueri Baru.

  3. Salin dan tempel contoh berikut ke dalam jendela kueri dan pilih Jalankan. Contoh ini menggunakan pernyataan DROP TRIGGER dan CREATE TRIGGER untuk mengganti nama pemicu menjadi Sales.bonus_reminder 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