Tôi có các thực thể tự phụ thuộc (a) trong cơ sở dữ liệu của tôi, được tham chiếu từ một thực thể khác (b), và cho một thực thể cụ thể (b), tôi cần có tất cả (a) các thực thể cần thiết. Đây là rất nhiều ánh xạ, vì vậy tôi có một bảng ánh xạ riêng. Tôi nghĩ chọn đệ quy Chọn CTE là đặt cược tốt nhất của tôi, nhưng tôi đang gặp sự cố:T-SQL đệ quy Chọn phụ thuộc thông tư
This Fiddle minh họa sự cố của tôi. Nếu một số người dùng giới thiệu một tham chiếu vòng tròn, lựa chọn đệ quy của tôi sẽ bị ngừng lại. Tôi đã được bộ não của tôi để cố gắng tìm cách để sửa lỗi này. Cần lưu ý rằng mặc dù tôi đã giới thiệu Foreign Keys trong fiddle, các khóa ngoại không thực sự được vinh danh bởi hệ thống tôi đang sử dụng (đối số lâu dài với DBAs) - tôi đã giới thiệu chúng để làm cho luồng dữ liệu rõ ràng hơn.
Các truy vấn đệ quy, đối với những người không muốn nhấp chuột đến fiddle:
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
Bất kỳ ý tưởng ra khỏi đó? Thiết kế này không được sản xuất, vì vậy tôi có thể thay đổi lược đồ một chút, nhưng tôi không muốn dựa vào việc khám phá các tham chiếu vòng tròn khi chèn, trừ khi nó có thể được thực hiện bởi T-SQL.
bao giờ sử dụng fxn này, nhưng bạn sẽ không chỉ nói 'trên objMap.masterObjID = recur.objID và recur.objID <> # otherobj.usesObjID'? hoặc là ngoài phạm vi? – Beth