2011-10-19 22 views
7

Her iki tablomda da farklı isimlerle tabloda listelenen tetikleyicileri görebiliyorum. Yaygın mı yoksa kötü bir uygulama mı? SQL Server 2005Aynı tabloda iki farklı insert tetikleyicisi olabilir mi?

+0

Tetikleyiciler ne yapar? "INSERTED" tablosu endekslenmemiş, bu nedenle performans nedenleriyle bunları birleştirmek daha iyi olabilir. –

cevap

11

Evet, her işlem için birden fazla tetikleyiciye kesinlikle sahip olabilirsiniz, örn. AFTER INSERT veya AFTER UPDATE vb. Ayrı endişeleri ayrı, küçük, yönetilebilir kod parçalarına ayırmak mantıklıdır.

Güvenemeyeceğiniz tek şey, belirli bir sırayla yürütülecekleridir - tetikleyicilerin gerçekten yürütüldüğü sıra, aynı zamanda her zaman aynı, yani kararlı olmak zorunda değildir.

+3

RDBMS'ye bağlı. Postgres, alfa sırasına göre birden fazla tetikleyicinin çağrılmasını garanti eder. SQL Standard'ın (nadiren takip edilen) yaratılış sırasına göre olduğunu belirtirler. –

+1

@AndrewLazarus: SQL Server'a atıfta bulundum (OP bunu sordu) ve SQL Server'ın böyle bir özelliği yok. Bunu işaret ettiğin için teşekkürler! –

+0

Kesinlikle. Çoğu zaman, insanların Google'dan çok fazla yer aldığını anlatan notlar ekledim. –

2

'u kullanıyorum, bu iyi bir uygulamadır çünkü zaman içinde değişikliklerinizi küçük (çevik) parçalar halinde parçalayabilir ve birbirinden bağımsız olarak ekleyebilir veya kaldırabilirsiniz.

+0

BTW Bir kerede 2 veya daha fazla satır eklerseniz (temel olarak bir grup kaydı içe aktarıyorum), EACH ekini referans alabilmem için bir yol var mı, yoksa tetikleyici her bir ek için otomatik olarak yürütülür mü? –

+1

@hmd tetikleyici, her bir ek insert için otomatik olarak yürütülür ve her bulk insert komutu için tetikleyicinin bir kez çalıştırılacağı toplu insertler kullanılmadığı sürece. – Niraj

+0

Bunun eski bir soru olduğunu bilin! Tetikleyicinizde, eklediğiniz tüm satırları içeren "eklenen" adlı bir tabloya her zaman başvurabilirsiniz (insert tetikleyicide bir veya daha fazla satır olması). Ayrıca, imleçler oluşturarak, her satırınızda dolaşabilir ve isterseniz bunları yapabilirsiniz. – olf

İlgili konular