Yabancı anahtarları seviyorum, ancak onlarla bir sorun yaşadım. Yabancı anahtarların tablolara kapatılmasını engelleyen bir dönüşüm programım var. Bunu yapmamın nedeni, ana tablodaki tüm kayıtları yeniden güncelleyebilmem, ancak diğer tabloları, her seferinde, BÜYÜK oldukları için her defasında yeniden dönüştürmek zorunda kalmadan, el değmemiş birine bağımlı bırakıyorum.Varolan anahtarı etkinleştir ile Varolan verileri denetle
Ben devre dışı bırakmak ve yabancı anahtarları yeniden etkinleştirmek için aşağıdaki komutları kullanıyorum: MyConstraint
ALTER tablo MyTable NOCHECK CONSTRAıNT'I ben yeniden sonra
ALTER tablo MyTable Slayt CONSTRAıNT'I Ancak
MyConstraint "Yaratılış veya Yeniden Etkinleştirme Varolan Verileri Denetle" sınırını etkinleştirin. Hayır olarak ayarlandığını biliyorum çünkü kısıtlamayı devre dışı bıraktım, ancak bunu yaparak benim sevmediğim veritabanı şemasını değiştirdim . Bunun, kısıtlamayı yeniden etkinleştirdiğini düşündüğüm ve mevcut verileri kontrol edeceğini düşündüm, ama görünüşe göre değil.Bunu ALTER TABLE komutuyla değiştirmenin bir yolu yok mu? Kısıtlamayı bırakıp yeniden yaratırsam yapabilirim, ama elimde olan her yabancı anahtarı yeniden oluşturmak ve bunu sürdürmek için senaryoyu yazmak üzereyim.
SQL Server 2008 R2 kullanıyorum.
-- Enable the constraint
ALTER TABLE MyTable
WITH CHECK CHECK CONSTRAINT MyConstraint
GO
Not:
Teşekkürler, bir hayat kurtarıcısın. –
Kayıt için, başka bir yerde bulma zamanım olduğu için: "sys.foreign_keys.is_not_trusted", SQL Server Management Studio'daki "Yabancı Anahtar İlişkileri" iletişim kutusundaki "Varolan Verileri Yaratma veya Yeniden Etkinleştirme Hakkında Verileri Kontrol Et" e karşılık gelir. – leqid