Mam tabeli zdefiniowane jako:Czy warto używać kolumny obliczeniowej jako części klucza podstawowego?
OrderID bigint NOT NULL,
IDA varchar(50) NULL,
IDB bigint NULL,
[ ... 50 other non relevant columns ...]
Naturalna klucz podstawowy dla tabeli byłaby (OrderID, IDA, IDB), ale to nie jest możliwe, ponieważ IDA i IDB może być null (mogą one oba są zerowe, ale nigdy nie są zdefiniowane w tym samym czasie). W tej chwili mam unikalne ograniczenie dla tych 3 kolumn.
Teraz chodzi o to, muszę mieć klucz podstawowy, aby umożliwić replikacji transakcyjnej, i mam do czynienia z dwóch opcji:
- Załóż kolumny tożsamości i użyć go jako klucz podstawowy
- Tworzenie niezerowa kolumna C zawierająca IDA lub IDB lub ", jeśli obie kolumny mają wartość zerową i jako mój klucz podstawowy użyję (OrderID, C).
Drugi szwy alternatywne czystsze jak mój PK byłoby sensowne, a jest to możliwe (patrz msdn link), ale ponieważ nigdy nie widziałem to zrobić w dowolnym miejscu, zastanawiałem się, czy były jakieś minusy do tego podejścia.