Bir tablo için bir tetikleyici aynı tabloda izleme için uygulanabilir miyim?

2 Cevap php

Bir tablo için bir tetikleyici aynı tabloda izleme için uygulanabilir miyim?

Yani ben masa "çalışan" Şimdi ben de aynı "çalışan" tablosundaki değişikliği izler böyle bir tetikleyicileri oluşturabilir Say var IF

gibi tetik

create trigger "<triggers_name>"  before insert on employee
For each row
Begin
 insert into employee field = timestamp;
end

2 Cevap

Kısacası, hayır.

Yani bu konuda düşünelim.

Bir tetikleyici eylem öncesi yürütecek "önce" (bu durumda, bir "insert" eylem) gerçekleşir.

If Bu çalışma vardı ve bir ekleme büyük bir özyinelemeli karmaşa içinde sonsuza kadar döngü istersin, çalışanın masa üzerinde sizi gerçekleşen her seferinde çalışanın tabloya bir ekleme yapmak için çalıştı.

MySQL dokümanlar başvurulan

"Within a stored function or trigger, it is not permitted to modify a table that is already being used (for reading or writing) by the statement that invoked the function or trigger."

this page daha fazla bilgi için bkz.


Yani uçlar yer alırken izleme yapmak gerekirse, ben kesinlikle bir tetikleyici vasıtasıyla başvurulan ikinci bir tablo kullanarak tavsiye ederim dedi. Sen ve çalışan tabloya FK oluşturmak ve bu yeni tabloda damgası sütun koymak ve böyle bir şey yapın:

for each row
insert into employee_tracking (id, timestamp) on duplicate key update set timestamp = new_timestamp;

Sadece ekleme zamanı takip etmek istedim, size DateField varsayılan ŞİMDİ () olabilir.

Ben sadece takılı bir masanın üzerinde bir güncelleme yapabilirim acaba? Yineleme Ben ikinci ekleme ile anlıyorum ama belki aynı tablo güncelleyebilirsiniz?