Veritabanımdaki (a) başka bir varlıktan (b) başvurulan ve belirli bir (b) varlık verilen kendiliğinden bağımlı varlıklarım var. a) Gerekli olan varlıklar. Bunlar birçok eşleştirmedir, bu yüzden ayrı bir eşleme tablosuna sahibim. CTE ile özyinelemeli bir seçmemin en iyi seçim olduğunu düşünüyorum, ancak bir sorunla karşılaşıyorum:T-SQL Recursive Seç Dairesel bağımlılık
This Fiddle Sorunumu gösterir. Bazı kullanıcılar döngüsel bir referans sunuyorsa, özyinelemeli seçimim bir çığlık atmaya öğütülür. Bunu düzeltmek için bir yol bulmaya çalışmak için beynimi karıştırıyorum. Unutulmamalıdır ki yabancı klavyeleri kemanda tanıttığım halde, yabancı anahtarlar kullandığım sistem tarafından gerçekten onurlandırılamaz (DBA'larla uzun süredir devam eden argüman) - veri akışını daha açık hale getirmek için onları tanıttım.
keman tıklama yoluyla istemeyen kişiler için özyinelemeli sorgu,: Orada
WITH recur(objID) AS (
SELECT usesObjID
FROM #otherObj
WHERE otherObjID = 1
UNION ALL
SELECT slaveObjID
FROM #objMap
INNER JOIN recur
on #objMap.masterObjID = recur.objID
)SELECT objID from recur
Herhangi Fikirler? Bu tasarım üretimde değil, bu yüzden şemayı biraz değiştirebilirim, ancak T-SQL tarafından yapılmadığı sürece, ekleme sırasında döngüsel referansları keşfetmeye güvenmemek isterim.
bu FXN hiç kullanmadım, ama sadece objMap.masterObjID = recur.objID ve recur.objID <> # otherobj.usesObjID' üzerinde 'öyle değil mi? ya da kapsam dışı mı? – Beth