У меня есть таблица определяется как:Полезно ли использовать вычисляемый столбец как часть первичного ключа?
OrderID bigint NOT NULL,
IDA varchar(50) NULL,
IDB bigint NULL,
[ ... 50 other non relevant columns ...]
Естественный первичный ключ для этой таблицы будет (OrderID, IDA, IDB), но это не возможно, потому что IDA и IDB может быть нулевым (они могут оба значения равны нулю, но оба они одновременно не определены). Сейчас у меня есть уникальное ограничение для этих трех столбцов.
Теперь, вещь мне нужна первичный ключ, чтобы включить репликацию транзакций, и я столкнулся с дилеммой:
- Создать столбец идентификаторов и использовать его в качестве первичного ключа
- Создать не нулевой вычисленный столбец C, содержащий либо IDA, либо IDB, либо '', если оба столбца равны нулю, и используйте (OrderID, C) в качестве моего первичного ключа.
Вторые альтернативные швы чище, как мой ПК будет иметь смысл, и это возможно (см msdn link), но так как я никогда не видел это сделать в любом месте, мне было интересно, если бы они были некоторые минусы такого подхода.