2009-06-15 24 views
6

Şu anda veritabanı tasarımımızda iki varlık arasında dairesel bir referans var. Diğer bir deyişle, her tabloda birincil anahtarlara referans veren yabancı anahtarlarımız var. Bu tablolara kayıt eklemek için ertelenmiş bir kısıtlama kontrolü gerçekleştirmeliyiz. SQL Server 2008'de bu mümkün mü? Oracle DDL'nin bunun için özel bir sözdizim olduğunu biliyorum.ertelenmiş kısıtlama denetimi

cevap

7

SQL Server'da ertelenmiş kısıtlama denetimi yapmak için yerel bir yol yoktur.

Olası en iyi seçeneğiniz, ikinci kayıt eklenene kadar ilk tabloda yabancı anahtar sütununa bir NULL değeri eklemek ve daha sonra aynı işlemin bir parçası olarak, ilk tablodaki yabancı anahtar sütununu güncellemektir.

İlgileniyorum - Dairesel referansınız için iş sebebi nedir? Bu kesinlikle olağanüstü bir gereklilik.

Aynı konu hakkında this thread'a da bakabilirsiniz.

+1

@Aaron. Aynı ürünün eş anlamlıları arasında tekrarlayıcı bir referans var. –

+0

@Igor: O zaman muhtemelen ne istediğinizi, ürün-adını ürün bilgisi ile ürün isimleri arasında bire-bir ilişki ile ayrı bir tabloda saklamaktır. Ertelenmiş Kısıtlamalar, benzersiz bir anahtarı takas etmek veya yeniden düzenlemek istediğiniz durumlarda çok yararlı olacaktır (* "Sipariş" * sütunu gibi) –