Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Lingkaran Pemicu SQL Server

Saya tidak menyarankan untuk menonaktifkan pemicu secara eksplisit selama pemrosesan - ini dapat menyebabkan efek samping yang aneh.

Cara paling andal untuk mendeteksi (dan mencegah) siklus dalam pemicu adalah dengan menggunakan CONTEXT_INFO() .

Contoh:

CREATE TRIGGER tr_Table1_Update
ON Table1
FOR UPDATE AS

DECLARE @ctx VARBINARY(128) 
SELECT @ctx = CONTEXT_INFO() 
IF @ctx = 0xFF
    RETURN

SET @ctx = 0xFF

-- Trigger logic goes here

Lihat tautan ini untuk contoh yang lebih detail.

Catatan di CONTEXT_INFO() di SQL Server 2000:

Info konteks didukung tetapi ternyata CONTEXT_INFO fungsi tidak. Anda harus menggunakan ini sebagai gantinya:

SELECT @ctx = context_info
FROM master.dbo.sysprocesses
WHERE spid = @@SPID


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tambahkan Login Server Tertaut di SQL Server (Contoh T-SQL)

  2. Menghapus Akun Email Database (SSMS)

  3. Tanggal/waktu catatan MSSQL hapus otomatis

  4. CONVERT() di SQL Server

  5. Apa yang setara dengan 'jelaskan tabel' di SQL Server?