Veritabanı2.table2'den bir satır silindiğinde satırları veritabanı1.table1'den koşullu olarak silen temel bir veritabanı tetikleyicisi oluşturmaya çalışıyorum. Tetikleyicilere yeniyim ve bunu başarmanın en iyi yolunu öğrenmeyi umuyordum. Şimdiye kadar sahip olduğum şey bu. Öneriler?SQL Server ON DELETE Tetikleyici
CREATE TRIGGER sampleTrigger
ON database1.dbo.table1
FOR DELETE
AS
IF EXISTS (SELECT foo
FROM database2.dbo.table2
WHERE id = deleted.id
AND bar = 4)
-- If there is a row that exists in database2.dbo.table2
-- matching the id of the deleted row and bar=4, delete
-- it as well.
-- DELETE STATEMENT?
GO
İhtiyacınız Tetikleyicinin ateşlendiğini hesaba katmak ** ifadesiyle bir kez ** (ve ** NOT ** bir kez pe Birçok devir inanıyorum gibi r satır) ve "Silindi" sahte tablo ** birden fazla satır içerebilir ** (ifadeniz birden çok satırı sildiyse) –
@marc_s - Sistemde bir seferde yalnızca bir satır silinebilir (uygulama ön ucu). Ne demek istediğini anlatabilir misin? 'WHERE id = deleted.id' 'i WHERE id IN (SELECT ID silindi)' ne çevirmek kadar basit mi? –
@ShawnH. Evet bu kadar basit olmalı. Bence Marc bir şekilde silâhın bir yerden silindiğini söylerse, tetikleyici sadece satır başına değil, tüm deyim için bir kez ateş edecekti, bu yüzden bir “IN” kullanmak her iki şekilde de sıralamalıdır. – Bridge