У меня может быть внешний ключ, ссылающийся на столбец в представлении в SQL Server?

82
задан bluish 30 November 2011 в 13:49
поделиться

3 ответа

Вы не можете сослаться на представление во внешнем ключе.

103
ответ дан Brian Fisher 24 November 2019 в 09:13
поделиться

Если Вам действительно нужно A_or_B_ID в TableZ, у Вас есть две подобных опции:

1) Добавляют nullable A_ID и B_ID столбцы к таблице z, делают A_or_B_ID вычисляемый столбец с помощью ISNULL на этих двух столбцах и добавляют ограничение CHECK, таким образом, что только один из A_ID или B_ID не пустой

, 2) Добавляют столбец TableName к таблице z, вынужденный содержать или A или B. теперь создают A_ID и B_ID как вычисляемые столбцы, которые являются только непустыми, когда их соответствующую таблицу называют (использующий выражение CASE). Сделайте их, сохранился также

В обоих случаях, Вы теперь имеете A_ID и B_ID столбцы, которые могут иметь соответствующие внешние ключи к базовым таблицам. Различие находится, в котором вычисляются столбцы. Кроме того, Вам не нужен TableName в опции 2 выше, если домены 2 столбцов ID не накладываются - пока Ваше case-выражение может определить, в который домен A_or_B_ID попадает

(Благодаря комментарию для фиксации моего форматирования)

16
ответ дан Damien_The_Unbeliever 24 November 2019 в 09:13
поделиться

Извините, Вы не можете FK к представлению в SQL Server.

8
ответ дан Jarrett Meyer 24 November 2019 в 09:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: