Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.02.28;
Скачать: CL | DM;

Вниз

Каскадное удаление в MSSQL7   Найти похожие ветки 

 
Beginer   (2002-01-31 15:28) [0]

Начал переносить первую программу с Access формата на SQL7.
Обнаружил неприятное отличие SQL-диалекта SQL7 от Access: в настройках связей (между таблицами) отсутствует вариант каскадного обновления и удаления в дочерней таблице.
Что же теперь, вручную прописывать на клиенте удаление из дочерней таблицы перед удалением из родительской или есть какой то способ прописать каскадное удаление строк дочерней таблицы, как это сделано в Access?

Заранее благодарю.


 
knyaz17   (2002-01-31 15:34) [1]

Пользуйся триггерами!


 
TSV ©   (2002-01-31 16:15) [2]

Триггерами не получится, тат как они по своей природе AFTER . Есть два варианта: либо MSSQL 2000, либо делать через хранимые процедуры.

Удачи.


 
kig   (2002-01-31 17:17) [3]

С триггерами может получится, если целостность поддерживать тоже через триггера. Но руками это писать - уж лучше сгенерить их в, например в Power Designer.


 
TSV ©   (2002-01-31 17:20) [4]

Ну, если все через триггеры, тогда конечно да. Но по-моему, проще вариант с MSSQL 2000.

С уважением.


 
Johnmen ©   (2002-01-31 17:21) [5]

>TSV : это действительно так в MSSQL !!!??? -> ...Триггерами не получится, тат как они по своей природе AFTER...


 
TSV ©   (2002-01-31 17:24) [6]

В MSSQL 2000 появились триггеры INSTEAD (BEFORE), а также каскадные удаления / обновления.


 
wicked ©   (2002-01-31 17:31) [7]

да всё получится триггерами насчёт удаления.... а целостность можно поддерживать через constraint - правда, не каскадную, а запретительную (restrict), как в парадоксе.....
насчёт удаления - если не удадутся удаления в подчинёных таблицах, то произойдёт откат транзакции и mssql ничего не удалит....


 
kig   (2002-01-31 17:34) [8]

К сожалению INSTEAD OF не помогают в этой ситуевене - они по своей природе тоже AFTER - срабатывают только после декларативной целостности (.


из статьи
http://www.optim.ru/cs/2000/3/sql2000-99/sql2000-99.asp
"...ведь все ограничения проверяются до запуска триггеров, и в случае их нарушения триггеры просто не запускаются. Кстати, это утверждение верно и для INSTEAD OF-триггеров. Это не дает вмешаться в логику записи изменений до проверки декларативных ограничений."


 
TSV ©   (2002-01-31 18:26) [9]

Тогда только каскадное удаление.


 
andreym999   (2002-01-31 23:03) [10]

В триггерах MSSQL 7.0 есть представления журнала транзакций называются inserted и deleted с их помощью транзакцию можно или откатить или дать ей возможность завершиться


 
SergSuper   (2002-02-01 10:15) [11]

Если есть INSTEAD OF триггер, то действий вообще никаких не произойдёт, т.к. всё действие обеспечивается только триггером.
Так что говорить что они AFTER нельзя. Они именно INSTEAD


 
TSV ©   (2002-02-01 10:19) [12]

> andreym999 (31.01.02 23:03)

Ну и что ты этим хотел сказать. Мы о КАСКАДНОМ удалении говорим.


 
kig   (2002-02-01 15:40) [13]

2 SergSuper (01.02.02 10:15)

Они AFTER по отношению не к действиям, а по отношению к механизму декларативной целостности. Вопрос на эту тему, да и статье (см. ссылку выше) они рассматриваются именно с этих позиций.


 
andreym999   (2002-02-01 17:21) [14]

To TSV а что тебе мешает используя inserted и deleted при срабатывании триггера удалить данные в дочерней таблице, в ней также может сработать триггер и сделать тоже. В случае возникновении ошибки транзакцию откатить.


 
TSV ©   (2002-02-01 19:05) [15]

> andreym999 (01.02.02 17:21)

Тогда придется и ссылочную целостность через триггеры делать, т.е. не через foreign key constraints . В общем, занятие хлопотное.



Страницы: 1 вся ветка

Текущий архив: 2002.02.28;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.016 c
1-90589
Alexandr
2002-02-12 13:27
2002.02.28
Фреймы


3-90507
Gurban
2002-02-01 10:30
2002.02.28
Paradox + SQL


1-90535
Андрей Сенченко
2002-02-11 09:41
2002.02.28
StringGrid.Options в Runtime


4-90719
BFG
2001-12-27 19:49
2002.02.28
Hook


1-90556
DimaIv
2002-02-11 18:31
2002.02.28
Как в Delphi6 сделать чтобы стандартной дерикторией