SORU
14 Mayıs 2009, PERŞEMBE


koşullu benzersiz kısıtlama

Bir sütuna bir değer için sütun bir dizi, ama benzersiz kısıtlamayı zorlamak için gereken bir durum var.

örneğin Tablo(İD, İsim, RecordStatus) gibi bir tablo var

Kayıt durumu Tek bir değer 1 veya 2 (etkin veya silinmiş), ve istiyorum oluşturmak için eşsiz bir kısıtlama üzerinde KİMLİĞİ, RecordStatus sadece zaman RecordStatus = 1, beri umurumda varsa birden fazla silinen kayıtları ile aynı kimlik.

tetikleyiciler yazma dışında, bunu yapabilir miyim?

sql server 2005 kullanıyorum

çok teşekkürler

CEVAP
1 Mart 2011, Salı


Hani, the filtered index. Belgeler (vurgu benim): gelen

Süzülmüş bir dizin optimize kümelenmiş dizin veri iyi tanımlanmış bir alt kümesi seçme sorguları karşılamak için özellikle uygundur.Dizin için bir filtre koşulunu tablodaki satırların bir kısmını kullanır.İyi tasarlanmış bir filtre uygulanmış dizin sorgu performansını artırmak olarak tam tablo dizinleri ile karşılaştırıldığında dizin bakım ve depolama maliyetlerini azaltabilir.

Ve burada örnek bir filtre koşulunu ile benzersiz bir dizin birleştirme:

create unique index [MyIndex]
on [MyTable]([ID])
where [RecordStatus] = 1

Not: süzülmüş dizin SQL Server 2008'de kullanılmaya başlandı. SQL Server'ın önceki sürümleri için, lütfen this answer bkz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ASUS

    ASUS

    22 EKİM 2005
  • Klemens Torggler

    Klemens Torg

    11 Mart 2008
  • Strata1000

    Strata1000

    28 EYLÜL 2009