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

Bagaimana saya bisa mengedit nilai INSERT di pemicu di SQL Server?

Gunakan pemicu setelah penyisipan. Gabung dari inserted tabel semu ke Tb pada kunci utama. Kemudian perbarui nilai desc. Sesuatu seperti:(Tapi mungkin tidak dikompilasi)

CREATE TRIGGER TbFixTb_Trg 
ON  Tb  
AFTER INSERT 
AS  
BEGIN 
    UPDATE Tb
    SET DESC = SomeTransformationOf(i.DESC)
    FROM Tb
    INNER JOIN inserted i on i.Id = Tb.Id
END  
GO

Pemicu ini terjadi setelah penyisipan terjadi, tetapi sebelum insert pernyataan selesai. Jadi, nilai baru yang salah sudah ditempatkan di tabel target. Pemicu ini tidak perlu diubah karena kolom ditambahkan, dihapus, dll.

Peringatan Batasan integritas diterapkan sebelum pemicu setelah kebakaran. Jadi, Anda tidak dapat mengenakan batasan centang untuk menerapkan bentuk DESC yang tepat. Karena itu akan menyebabkan pernyataan gagal sebelum pemicu memiliki kesempatan untuk memperbaiki apa pun. (Silakan periksa kembali paragraf ini sebelum mengandalkannya. Sudah lama sejak saya menulis pemicu.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Internal Replikasi Transaksional SQL Server

  2. Simpan byte[] ke dalam database SQL Server dari C#

  3. Periksa apakah ada file atau tidak di sql server?

  4. Bisakah SQL Server mengirim permintaan web?

  5. Batasan yang Dapat Ditangguhkan di SQL Server