Daha çox

Canlı MSSQL Cədvəllərinin redaktə edilməsi və Sahələrin yenilənməsi

Canlı MSSQL Cədvəllərinin redaktə edilməsi və Sahələrin yenilənməsi


Canlı bir MS SQL məkan cədvəlində bir istifadəçi ya bir sahəni yeniləyəcək bir tetik yaratmağa baxıram:

  1. Yeni bir xüsusiyyət yaradır

  2. Bir xüsusiyyətin həndəsəsini yeniləyir.

Təəssüf ki, yalnız yeni bir xüsusiyyət yarandıqda bir sahəni yeniləməyi və ya bir qeydin həndəsi dəyişdirildikdə hər bir qeyd üçün bir sahəni yeniləməyi bacarmışam.

İdeal dünya - 'Yeniləndi' atributu, yaradılan və ya dəyişdirilmiş xüsusi xüsusiyyət üçün cari tarixi doldurur.

İndiyə qədər yalnız yeni bir xüsusiyyət yaratarkən işləyən budur:

GO ANSI_NULLS SET GO GO SUT QUOTED_IDENTIFIER ON GO CREATE TRIGGER * [triggername] * ON * [table] * INSERT SONRA @ID VARCHAR BİLGİSİNDƏ YENİLƏNİB (8) SELECT @ID = [ID] FROM * [table] * UPDATE * [ cədvəl] * SET Yenilənib = GETDATE () HARADA [ID] = @ İD GİDİB

Bir qeyd yeniləndikdə atəşə tutulacaq əsas bir tetikleyici budur:

TRIGGER dbo.trg_MY_TABLE_OnUpdate ON dbo.MY_TABLE YENİLƏNİŞDƏN SONRA YENİLƏNİB Başlayın Yeniləməyə başlayın dbo.MY_TABLE Set DATE_CHANGED = CURRENT_TIMESTAMP, USER_CHANGED = SYSTEM_USER Harada MI_PRINX; Qurtarın

və yerləşdirilən bir qeyd üçün oxşar

TRIGGER dbo.trg_MY_TABLE_OnInsert ON dbo yarat. MY_TABLE INSERT SONRASI Yeniləməyə başlayın dbo.MY_TABLE Set DATE_CREATED = CURRENT_TIMESTAMP, USER_CREATED = SYSTEM_USER Harada MI_PRINX (Daxil MI_PRINX seçin); Qurtarın

Yuxarıdakı nümunələrdə məkan obyektinin redaktə olub-olmadığını yoxlamıram. Müəyyən bir sütunun dəyişdirilib-dəyişdirilmədiyini yoxlamaq üçün UPDATE () funksiyasından istifadə edə bilərsiniz, daha çoxunu buraya baxın: https://msdn.microsoft.com/en-us/library/ms187326.aspx