Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Первичный ключ во вьюхе и схема  [new]
vah
Member

Откуда:
Сообщений: 2661
Скажите пожалуйста, почему не создается первичный ключ у вьюхи без привязанной схемы?
В чем суть?

Заранее благодарен.
11 июл 12, 10:20    [12848866]     Ответить | Цитировать Сообщить модератору
 Re: Первичный ключ во вьюхе и схема  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
А в чём суть "приязанной схемы" вы знаете?
BOL
SCHEMABINDING

Привязывает представление к схеме базовой таблицы или таблиц. Если аргумент SCHEMABINDING указан, нельзя изменить базовую таблицу или таблицы таким способом, который может повлиять на определение представления. Сначала нужно изменить или удалить само представление для сброса зависимостей от таблицы, которую требуется изменить. При использовании аргумента SCHEMABINDING инструкция select_statement должна включать двухкомпонентные (schema.object) имена таблиц, представлений или пользовательских функций, упоминаемых в предложении. Все указанные в инструкции объекты должны находиться в одной базе данных.

Представления или таблицы, входящие в представление, созданное при помощи предложения SCHEMABINDING, не могут быть сброшены, пока это представление не будет удалено или изменено таким образом, чтобы оно более не было привязано к схеме. В противном случае компонент Database Engine выдаст ошибку. Кроме того, выполнение инструкций ALTER TABLE для таблиц, которые входят в представления, привязанные к схемам, завершается ошибкой, если эти инструкции влияют на определение представления.
11 июл 12, 10:43    [12849069]     Ответить | Цитировать Сообщить модератору
 Re: Первичный ключ во вьюхе и схема  [new]
iap
Member

Откуда: Москва
Сообщений: 46999
vah
Скажите пожалуйста, почему не создается первичный ключ у вьюхи без привязанной схемы?
В чем суть?

Заранее благодарен.
"Первичный ключ" - constraint Primary Key? Или имеется в виду что-то другое?
Если констрейнт, то я что-то в этой жизни пропустил?
11 июл 12, 11:23    [12849302]     Ответить | Цитировать Сообщить модератору
 Re: Первичный ключ во вьюхе и схема  [new]
vah
Member

Откуда:
Сообщений: 2661
iap,

нет, уникальный индекс
11 июл 12, 13:30    [12850352]     Ответить | Цитировать Сообщить модератору
 Re: Первичный ключ во вьюхе и схема  [new]
vah
Member

Откуда:
Сообщений: 2661
Mnior,

зачем тогда вообще привязывать схему к вьюхе, если столько гимора?
11 июл 12, 13:31    [12850362]     Ответить | Цитировать Сообщить модератору
 Re: Первичный ключ во вьюхе и схема  [new]
Shakill
Member

Откуда: мск
Сообщений: 1880
vah
зачем тогда вообще привязывать схему к вьюхе, если столько гимора?


а это чтобы вы не пытались изменить структуру или удалить таблицу, на основе полей которой будет создаваться индекс для вьюхи
11 июл 12, 14:42    [12850946]     Ответить | Цитировать Сообщить модератору
 Re: Первичный ключ во вьюхе и схема  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
vah
зачем тогда вообще привязывать схему к вьюхе, если столько гимора?
1. Какого гемора?
2. Причём тут какой-то гемор к очевидному требованию:
На время жизни индексированного представление и на момент создания индекса, все объекты на которые ссылается это представление не изменялись.

Ага вьюха есть, индекс на неё есть, а таблиц на основе которых строились данные уже нет.
11 июл 12, 14:52    [12851037]     Ответить | Цитировать Сообщить модератору
 Re: Первичный ключ во вьюхе и схема  [new]
vah
Member

Откуда:
Сообщений: 2661
Mnior,

ладно, спасибо. Доходчиво.
11 июл 12, 14:59    [12851079]     Ответить | Цитировать Сообщить модератору
 Re: Первичный ключ во вьюхе и схема  [new]
для тупых
Guest
Mnior,
а почему вьюха не может быть привязана к схеме, если в определении вью используется sys.objects?
11 июл 12, 15:13    [12851175]     Ответить | Цитировать Сообщить модератору
 Re: Первичный ключ во вьюхе и схема  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
для тупых
а почему вьюха не может быть привязана к схеме, если в определении вью используется sys.objects ?
А с чего вы решили что это таблица?
Более того, многие системные объекты виртуальны, эмулируют поведение словно это таблицы/представления, хотя на самом деле это наборы структур. Посмортите на разные планы запросов к ним, заметите кое что интересное.

Когда вы вешаете SCHEMABINDING, то это означает что изменение базовых объектов (таблиц) теперь зависит от порождённых (представление). И как вы себе представляете, что системные объекты зависили от пользовательских - это не безопастно и не предстказуемо.

Или вы думаете, что изменение системных объектов (к примуру выставление сервис паков), это их ALTER на каждой базе?
В том-то и дело, что они независимы от базы и хранятся в отдельной системной базе mssqlsystemresource. Естественно что она свободно меняется (при выствлении обновлений) независимо от пользовательских баз (или ещё не приаттаченых). Надеюсь вы понимаете почему нельзя успользовать объекты из других баз.

А коль так то условие целостности нельзя выполнить.
11 июл 12, 17:58    [12852374]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить