Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.02.28;
Скачать: [xml.tar.bz2];

Вниз

Каскадное удаление в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.004 c
1-90594
Трактор
2002-02-12 16:55
2002.02.28
помогите!


14-90644
Kozhanov
2002-01-11 12:07
2002.02.28
DEFCON 3


4-90692
Ted
2001-12-27 08:44
2002.02.28
Отрубить клаву


14-90649
panov
2002-01-14 07:17
2002.02.28
Нужен алгоритм


7-90679
Ол11
2001-11-26 10:49
2002.02.28
продолжение вопроса о PCI





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский