Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Подскажите ! View на основе связанных таблиц, удаление строк
|
|||
|---|---|---|---|
|
#18+
MS SQL Server 2000 Имеется view на основе связанных таблиц(причем одна из них ипользуется только для условий и ее поля не выводятся). 1.Как удалить строки в этом случае(при попытке удаления сервер пишет что не может сделать это, т.к. имеется более одной таблицы) 2.Как написать триггер для view.(если не указывать AFTER или INSTEAD OF выдает ошибку-"имя объекта указано не верно", а если ставлю FOR INSTEAD OF DELETE (в часности) выдает ошибку -"неправильный синтаксис около слова INSTEAD") Заранее благодарен и извиняюсь если не совсем ясно объяснил проблему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2001, 15:10 |
|
||
|
Подскажите ! View на основе связанных таблиц, удаление строк
|
|||
|---|---|---|---|
|
#18+
For писать не надо. After это тоже самое что и for. А вам надо: CREATE TRIGGER <наименование триггера> ON <наименование таблицы> INSTEAD OF INSERT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2001, 07:52 |
|
||
|
Подскажите ! View на основе связанных таблиц, удаление строк
|
|||
|---|---|---|---|
|
#18+
А если точнее, то CREATE TRIGGER <наименование триггера> ON <наименование таблицы> INSTEAD OF DELETE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2001, 08:39 |
|
||
|
Подскажите ! View на основе связанных таблиц, удаление строк
|
|||
|---|---|---|---|
|
#18+
Сдается мне, что вы чего-то не то делаете. Если программер сам пишет SQL-запрос "delete from ...", то почему бы ему не написать сразу удаление из таблички. А если вы пользуетесь средствами автоматического построения запросов на изменение (типа обновляемый рекордсет), то это как и любая автоматика, работает в ограниченном пространстве мысли и в простейщих случаях. Т.е. обновление VIEW к этому случаю не подходит, и не нужно в таких случаях полагаться на автоматику. А лучше самому написать запрос на delete опять же таблички. Ну, а если у вас чисто познавательный интерес или любите создавать себе трудности, чтобы потом иметь возможность их героически преодолевать, тогда конечно направление избранно верное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2001, 09:30 |
|
||
|
Подскажите ! View на основе связанных таблиц, удаление строк
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы! Что касается триггера все окей (хотя следуя хелпу FOR [{AFTER | INSTEAD OF }], я не догодался бы). А что касается удаления, то дело в том что клиентская часть у нас организована на ACCESS(так в нашем случае удобней), а вьювер ограничевает информацию пользователям и подвязан в ACCESS как внешняя таблица. Так и получается что изменение и вставка работают нормально, а удаление недоступно (хотя я и понимаю что сервер прав). Поэтому я и хотел используя триггер попробовать решить проблему.(Можно попробовать еще с процедурами.) Если есть другие способы - посоветуйте. Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2001, 11:17 |
|
||
|
Подскажите ! View на основе связанных таблиц, удаление строк
|
|||
|---|---|---|---|
|
#18+
При построении вьюва для связывания таблиц используйте не выражение WHERE, а JOIN (тем более что данные второй таблицы вам не нужны в результате, а только для связи). Тогда в выражении FROM у вас будет не две таблицы а одна и движок Access не будет ругаться на то что вьюв по нескольким таблицам. По крайней мере у меня был такой случай при работе через VB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2001, 12:23 |
|
||
|
Подскажите ! View на основе связанных таблиц, удаление строк
|
|||
|---|---|---|---|
|
#18+
Поясню еще раз, а то я недопонимаю ваших ответов, или недопонимают меня. Вот эквивалент моего вьюва 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2001, 12:29 |
|
||
|
Подскажите ! View на основе связанных таблиц, удаление строк
|
|||
|---|---|---|---|
|
#18+
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 и не самый эффективный, но и запрос ведь не конкретный - есть простор для творчества по оптимизации подзапросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2001, 07:55 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32014700&tid=1825412]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
67ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
| others: | 264ms |
| total: | 436ms |

| 0 / 0 |
