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

Bagaimana saya bisa mendapatkan pemicu untuk diaktifkan pada setiap baris yang dimasukkan selama INSERT INTO Table (dll) SELECT * FROM Table2?

Pemicu penyisipan dipanggil sekali untuk penyisipan massal, tetapi pada pemicu Anda dapat menggunakan inserted khusus tabel untuk mendapatkan semua baris yang disisipkan.

Jadi, bayangkan Anda memiliki pemicu penyisipan seperti ini, yang mencatat semua baris yang dimasukkan ke dalam table

create trigger trgInsertTable 
on dbo.table
for insert
as
   insert tableLog(name)
    select name from inserted

Dengan pemicu ini, saat Anda membuat penyisipan massal di table , tableLog diisi dengan jumlah baris yang sama yang dimasukkan ke table

Untuk pemicu khusus Anda, karena Anda perlu memanggil prosedur tersimpan untuk setiap baris, Anda perlu menggunakan kursor:

ALTER TRIGGER dbo.Notify
    ON  dbo.Table
    AFTER INSERT
AS 
BEGIN

    DECLARE @EmailSender varchar(50)='Sender Profile'
    DECLARE @User varchar(20)
    DECLARE @Subject varchar(50)

    DECLARE cursor CURSOR FOR
      SELECT User, '(' + CONVERT(varchar, Id) + ')!'
        FROM inserted

    OPEN cursor
    FETCH NEXT FROM cursor INTO @User, @Subject
    WHILE @@FETCH_STATUS = 0
    BEGIN
      exec msdb.dbo.sp_send_dbmail
          @[email protected],
          @[email protected]
          @[email protected],
          @body='//etc'
      FETCH NEXT FROM cursor INTO @User, @Subject
    END
    CLOSE cursor
    DEALLOCATE cursor

END

Saya tidak menguji, tetapi seharusnya berfungsi



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:Basis data macet dalam status Memulihkan

  2. Bagaimana menjalankan prosedur tersimpan di sql server setiap jam?

  3. Cara Membuat Batasan Cek pada Kolom Tunggal di SQL Server - Tutorial SQL Server / TSQL Part 83

  4. Pemulihan Database yang Dipercepat di SQL Server 2019

  5. Apa perbedaan antara tabel temp dan variabel tabel di SQL Server?