Şu anki konumumda en az TLC ayırması gereken bir veritabanına rastladım, hepsi aynı olan birçok çapraz başvuru tablosu var Yapı şeması bilge ve tüm iş mantığını veya etki alanı bütünlüğünü zorlamak için tetikleyicileri kullanır. Bazı tetikleyicileri kısıtlamalarla değiştirip değiştiremeyeceğimi anlamaya çalışıyorum. Aşağıda bu kalıbı karşılayan tipik bir tablo tanımı verilmiştir. Hepsi aynı tetikleyici tabanlı çözümü kullanarak bu tabloların yaklaşık 400'ü vardır.Tetikleyiciler kullanmadan 1'den çoğa ilişki için ek bir kısıtlama nasıl oluşturulur
CREATE TABLE dbo.FooXRef
(
FooXRefID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
BarID INT NOT NULL CONSTRAINT [fk_Bar] FOREIGN KEY REFERENCES dbo.Bar(BarID),
DefaultRecord BIT NOT NULL CONSTRAINT [DF_FooXRef_Default] DEFAULT(1)
);
orada BarID
ve DefaultRecord = 0
aynı değere sahip kayıtların sonsuz sayıda var olabilir, ama BarID
masa ve DefaultRecord = 1
yılında yerini sadece tek bir kayıt var olabilir olmanın kuralı.
Bu birleşime izin vermek için ne tür kısıtlamalar yapmam gerekiyor?
Bu tabloyu oluşturmak ve tetiklemek, geçerli veritabanında 400, sonraki adımda ise binlerce kişiyi üstleniyorum. Bu dava için işe yarayacak bir kısıtlama kurmak mümkün değil mi?
Maalesef, örneğe bağlı olarak, bu programsal bakımdan devam etmelisiniz. –
Örnek [burada] (https://technet.microsoft.com/en-us/library/ms188258%28v=sql.105%29.aspx) size herhangi bir fikir veriyor mu? – HABO