Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > использование вьешек


Автор: Satana 20.7.2005, 15:48
люди ну выручите с вьюшками в MSSQL 2000.
Короче задача такая нужно с помощью вьюшек вставлять данные в реальные таблицы. А как ет делать чото не представляю. Если можно то кинте в меня хотябы общим примером как это все можно сделать, с остальным думаю что разберусь сам.

Автор: kobra 20.7.2005, 16:27
Цитата(Satana @ 20.7.2005, 15:48)
Короче задача такая нужно с помощью вьюшек вставлять данные в реальные таблицы.
View бывает редактируемые (редко но бывает) и нередактируемые.
с редактируемими дело обстаит просто. пишеш insert into . . . и работает.
с нередактируемими дела обстаят сложнее (из названия ясно не редактируются). лично я, для вставки/редактирования/удаления всегда создаю хранимые процедуры. чего и вам советую.

Автор: Vit 20.7.2005, 18:01
Для редактирования нередактируемых используют триггеры "INSTEAD OF"

Автор: Satana 21.7.2005, 07:16
Цитата(kobra @ 20.7.2005, 16:27)
Цитата(Satana @ 20.7.2005, 15:48)
Короче задача такая нужно с помощью вьюшек вставлять данные в реальные таблицы.
View бывает редактируемые (редко но бывает) и нередактируемые.
с редактируемими дело обстаит просто. пишеш insert into . . . и работает.
с нередактируемими дела обстаят сложнее (из названия ясно не редактируются). лично я, для вставки/редактирования/удаления всегда создаю хранимые процедуры. чего и вам советую.

да там фишка такая что есть прога которая должна заливать данные, а поля и таблицы совсем не такие какие есть у меня, мой шеф говорит что можно забацать это с помощью вьюшек, хотя мне бы наверное было проще создать такие же таблицы как в оригинальной проге и триггерами раскидывать в нужные мне таблицы.

Автор: leniviy 2.9.2005, 16:17
Проблемы с инстэдоф триггерами на вьюхах:

1) У Вас будут проблемы с identity. Вы должны будете явно указывать значение identity поля, н-р -1, иначе он ругнется, что Null'ы запрещены
2) Если вы решите проблему 1, разрешив Null'ы, н-р ... as select id = cast( id as int ) + 0 , ...
у Вас появится другая: не будет работать индекс при выборке из вьюхи.
3) У Вас будут проблемы с Default constraint ( на вьюху его не повесишь )
4) И напоследок самое убойное: Вы не сможете использовать вьюху в запросах типа
update [<имя вьюхи>] set ... from [<имя вьюхи>]
и
delete [<имя вьюхи>] from [<имя вьюхи>]

Это все не баги . Это байдезайн smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)