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

Откуда:
Сообщений: 193
В продолжение беседы
https://www.sql.ru/forum/actualthread.aspx?bid=4&tid=205603&
Может кто подскажет синтаксис для реализации сабжевой задачки?
11 авг 05, 11:43    [1777190]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать Вьюшку Updateable?  [new]
aleks2
Guest
borisb
В продолжение беседы
https://www.sql.ru/forum/actualthread.aspx?bid=4&tid=205603&
Может кто подскажет синтаксис для реализации сабжевой задачки?


Приведи определение таблиц и самой View.
11 авг 05, 13:09    [1777680]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать Вьюшку Updateable?  [new]
borisb
Member

Откуда:
Сообщений: 193
Не совсем понял :(...
Есть список таблиц в базе SQL
Для некоторых из них в силу необходимости были изменены Имена на более короткие и сделаны Вьюшки с длинными именами. В результате чего получилось к ним подключится из Access. (см. ссылку выше)

Но: если линкованные в Access таблицы, указывающие на таблицы же Сиквела, можно редактировать (Ключ везде есть), то вот те, которые "смотрят" на Вьюшки, нет.

Знаю, что можно сделать Вьюшки Updateable, но не знаю как (каким синтаксисом T-SQL)
11 авг 05, 13:41    [1777874]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать Вьюшку Updateable?  [new]
aleks2
Guest
Ну попробуй
1)
CREATE VIEW [< owner > . ] view_name [ ( column [ ,...n ] ) ]
[ WITH < view_attribute > [ ,...n ] ]
AS
select_statement
[ WITH CHECK OPTION ]

< view_attribute > ::=
{ ENCRYPTION | SCHEMABINDING | VIEW_METADATA }

2) Ключ во View включен?
11 авг 05, 13:47    [1777904]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать Вьюшку Updateable?  [new]
borisb
Member

Откуда:
Сообщений: 193
aleks2
1)
CREATE VIEW [< owner > . ] view_name [ ( column [ ,...n ] ) ]
[ WITH < view_attribute > [ ,...n ] ]
AS
select_statement
[ WITH CHECK OPTION ]

< view_attribute > ::=
{ ENCRYPTION | SCHEMABINDING | VIEW_METADATA }

Сделал так:
create view dbo.stoimost_pripressovki_new_lookup
with VIEW_METADATA
as
SELECT     id, ceh, oborud, upsize_ts
FROM         mybase.dbo.stoimost_pripressovki_lookup
но... не получилось :( - снова необновляема из Access. Может что пропустил?

aleks2
2) Ключ во View включен?

Да! (id он там)
11 авг 05, 14:20    [1778111]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать Вьюшку Updateable?  [new]
Yuri Abele
Member

Откуда: Латвия> Литва > Тольятти > Wiesbaden > Karlsruhe
Сообщений: 1661
create view dbo.stoimost_pripressovki_new_lookup
with VIEW_METADATA
as
SELECT     id, ceh, oborud, upsize_ts
FROM         mybase.dbo.stoimost_pripressovki_lookup
А во фразе SELECT все поля перечислены?
11 авг 05, 14:41    [1778213]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать Вьюшку Updateable?  [new]
borisb
Member

Откуда:
Сообщений: 193
Yuri Abele
create view dbo.stoimost_pripressovki_new_lookup
with VIEW_METADATA
as
SELECT     id, ceh, oborud, upsize_ts
FROM         mybase.dbo.stoimost_pripressovki_lookup
А во фразе SELECT все поля перечислены?

Да, в т.ч. ключевое таблицы (id)
В приведенном фрагменте просто вырезаны остальные, т.к. их много;)
11 авг 05, 14:46    [1778243]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать Вьюшку Updateable?  [new]
Yuri Abele
Member

Откуда: Латвия> Литва > Тольятти > Wiesbaden > Karlsruhe
Сообщений: 1661
А поля типа TimeStamp нету?
11 авг 05, 14:49    [1778269]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать Вьюшку Updateable?  [new]
borisb
Member

Откуда:
Сообщений: 193
Yuri Abele
А поля типа TimeStamp нету?

Так ведь поле upsize_ts, перечисленное в селекте, и есть автоматически созданное самим SQL поле TimeStamp
11 авг 05, 15:22    [1778466]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать Вьюшку Updateable?  [new]
Роман Дынник
Member

Откуда:
Сообщений: 3324
instead of триггеры навесьте на свои view и изменяйте что и как хотите в этих триггерах.

...И еще SCHEMABINDING не мешало бы включить в определение view.
11 авг 05, 16:10    [1778760]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать Вьюшку Updateable?  [new]
borisb
Member

Откуда:
Сообщений: 193
Роман Дынник
instead of триггеры навесьте на свои view и изменяйте что и как хотите в этих триггерах.

...И еще SCHEMABINDING не мешало бы включить в определение view.

Добавил еще:
create view dbo.stoimost_pripressovki_new_lookup
with SCHEMABINDING, VIEW_METADATA
as
SELECT     id, ceh, oborud, upsize_ts
FROM         dbo.stoimost_pripressovki_lookup
но... результат тот же :(

А как триггеры навесить? У меня ж задача сделать редактируемым этот View из Access - а там может с таблицей происходить что угодно... Или на каждое действие триггер??

А может кто подскажет как по-другому обойти ограничение на имена таблиц (именно таблиц, т.к. Вьюхи отлично линкуются;)) в 27 символов при линковке таблиц SQL из Access'97?
11 авг 05, 16:43    [1779009]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать Вьюшку Updateable?  [new]
Роман Дынник
Member

Откуда:
Сообщений: 3324
>> Или на каждое действие триггер?
Да, на каждое действие instead of - триггер, внутри триггера добавляемые, удаляемые и обновляемые данные доступы через таблицы inserted и deleted.
Почитайте в BOOL про instead of триггеры.
11 авг 05, 16:46    [1779035]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать Вьюшку Updateable?  [new]
borisb
Member

Откуда:
Сообщений: 193
Я вот тут попытался содать индекс в самом View (правой кнопой - ) на то же поле id, которое является ключом таблицы.
Так вот он после этого а) попросил создать кластерный и б) ругнулся как на рис. (на ANSI_NULLS)

Т.е., как я понимаю, можно/нужно индекс сконструировать прям во View?

К сообщению приложен файл. Размер - 0Kb
11 авг 05, 16:58    [1779120]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать Вьюшку Updateable?  [new]
Konst_One
Member

Откуда:
Сообщений: 11551
линковать в Access надо через PASSTHRU запросы, например:

select PPP.* from dbo.stoimost_pripressovki_lookup as PPP
11 авг 05, 16:59    [1779126]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать Вьюшку Updateable?  [new]
Yuri Abele
Member

Откуда: Латвия> Литва > Тольятти > Wiesbaden > Karlsruhe
Сообщений: 1661
borisb
Т.е., как я понимаю, можно/нужно индекс сконструировать прям во View?

И ты получишь материализованное представление. Но пока все условия для этого выполнишь, проект уже закончится
11 авг 05, 17:04    [1779153]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать Вьюшку Updateable?  [new]
borisb
Member

Откуда:
Сообщений: 193
Konst_One
линковать в Access надо через PASSTHRU запросы, например:

select PPP.* from dbo.stoimost_pripressovki_lookup as PPP

Т.е. не надо сами таблицы линковать вообще?
Только создавать подобный запрос на каждую? А запрос назвать также как и бывшая линкованная табла... Так?

Попробовал сделать запрос к серверу в Access. В результате (после запроса на .dsn и указания Логина/Пароля;)) получился такой же необновляемый объект :( Эх....
11 авг 05, 17:08    [1779176]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать Вьюшку Updateable?  [new]
Роман Дынник
Member

Откуда:
Сообщений: 3324
да уж...
индексы вам то здесь зачем на вью.
индексированные вью - они для вьюх с агрегатными функциями, что бы агрегаты автоматом просчитывались при операциях с записями.
11 авг 05, 17:10    [1779186]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать Вьюшку Updateable?  [new]
Konst_One
Member

Откуда:
Сообщений: 11551
автор
Попробовал сделать запрос к серверу в Access. В результате (после запроса на .dsn и указания Логина/Пароля;)) получился такой же необновляемый объект :( Эх....


странно это, очень.
может у вас права на апдейт для этого логина на эту таблицу отсутствуют?
11 авг 05, 17:13    [1779204]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить