Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подскажите ! View на основе связанных таблиц, удаление строк / 9 сообщений из 9, страница 1 из 1
25.09.2001, 15:10
    #32014622
Lesnick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите ! View на основе связанных таблиц, удаление строк
MS SQL Server 2000
Имеется view на основе связанных таблиц(причем одна из них ипользуется только для условий и ее поля не выводятся).
1.Как удалить строки в этом случае(при попытке удаления сервер пишет что не может сделать это, т.к. имеется более одной таблицы)
2.Как написать триггер для view.(если не указывать AFTER или INSTEAD OF выдает ошибку-"имя объекта указано не верно",
а если ставлю FOR INSTEAD OF DELETE (в часности) выдает ошибку -"неправильный синтаксис около слова INSTEAD")

Заранее благодарен и извиняюсь если не совсем ясно объяснил проблему.
...
Рейтинг: 0 / 0
26.09.2001, 07:52
    #32014674
BiSas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите ! View на основе связанных таблиц, удаление строк
For писать не надо.
After это тоже самое что и for.

А вам надо:

CREATE TRIGGER <наименование триггера> ON <наименование таблицы>
INSTEAD OF INSERT
...
Рейтинг: 0 / 0
26.09.2001, 08:39
    #32014677
BiSas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите ! View на основе связанных таблиц, удаление строк
А если точнее, то

CREATE TRIGGER <наименование триггера> ON <наименование таблицы>
INSTEAD OF DELETE
...
Рейтинг: 0 / 0
26.09.2001, 09:30
    #32014684
Подскажите ! View на основе связанных таблиц, удаление строк
Сдается мне, что вы чего-то не то делаете. Если программер сам пишет SQL-запрос "delete from ...", то почему бы ему не написать сразу удаление из таблички. А если вы пользуетесь средствами автоматического построения запросов на изменение (типа обновляемый рекордсет), то это как и любая автоматика, работает в ограниченном пространстве мысли и в простейщих случаях. Т.е. обновление VIEW к этому случаю не подходит, и не нужно в таких случаях полагаться на автоматику. А лучше самому написать запрос на delete опять же таблички.

Ну, а если у вас чисто познавательный интерес или любите создавать себе трудности, чтобы потом иметь возможность их героически преодолевать, тогда конечно направление избранно верное.
...
Рейтинг: 0 / 0
26.09.2001, 11:17
    #32014700
Lesnick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите ! View на основе связанных таблиц, удаление строк
Спасибо за ответы!

Что касается триггера все окей (хотя следуя хелпу FOR [{AFTER | INSTEAD OF }], я не догодался бы).

А что касается удаления, то дело в том что клиентская часть у нас организована на ACCESS(так в нашем случае удобней),
а вьювер ограничевает информацию пользователям и подвязан в ACCESS как внешняя таблица. Так и получается что изменение и вставка работают нормально, а удаление недоступно (хотя я и понимаю что сервер прав). Поэтому я и хотел используя триггер попробовать решить проблему.(Можно попробовать еще с процедурами.)
Если есть другие способы - посоветуйте.

Заранее спасибо!
...
Рейтинг: 0 / 0
26.09.2001, 12:23
    #32014708
andy_kr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите ! View на основе связанных таблиц, удаление строк
При построении вьюва для связывания таблиц используйте не выражение WHERE, а JOIN (тем более что данные второй таблицы вам не нужны в результате, а только для связи). Тогда в выражении FROM у вас будет не две таблицы а одна и движок Access не будет ругаться на то что вьюв по нескольким таблицам. По крайней мере у меня был такой случай при работе через VB.
...
Рейтинг: 0 / 0
01.10.2001, 12:29
    #32014733
Lesnick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите ! View на основе связанных таблиц, удаление строк
Поясню еще раз, а то я недопонимаю ваших ответов, или недопонимают меня.
Вот эквивалент моего вьюва

SELECT Proba1.Num, Proba1.aaa, Proba1.bbb_id, Proba1.ccc
FROM Proba1 INNER JOIN Proba2 ON Proba1.bbb_id = Proba2.Num_id
WHERE Proba2.ddd LIKE 'a%' (условие для разных пользователей разные)

(Таблица Proba2 используется для фильтрации данных по полю ddd, а сами данные этого поля не выводятся)

2 andy_kr

Как по другому мне использовать INNER JOIN или Where.
...
Рейтинг: 0 / 0
02.10.2001, 07:55
    #32014756
andy_kr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите ! View на основе связанных таблиц, удаление строк
2 Lesnick
Да хотя бы вот так:

Create View <name>
as
SELECT Proba1.Num, Proba1.aaa, Proba1.bbb_id, Proba1.ccc
FROM Proba1
WHERE Proba1.bbb_id IN ( select Proba2.Num_id FROM Proba2
WHERE Proba2.ddd LIKE 'a%' )

Такая конструкция работает (проверял). Хотя оператор IN и не самый эффективный,
но и запрос ведь не конкретный - есть простор для творчества по оптимизации подзапросов.
...
Рейтинг: 0 / 0
02.10.2001, 09:16
    #32014770
Lesnick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите ! View на основе связанных таблиц, удаление строк
2 andy_kr
Спасибо за совет!
У меня тоже была мысль поэкспериментировать с подзапросами, но доверился построителю вьвов.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подскажите ! View на основе связанных таблиц, удаление строк / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]