Форум: "Базы";
Текущий архив: 2003.05.08;
Скачать: [xml.tar.bz2];
ВнизМожно ли в одном SQL-запросе сделать удаление из связанных таблиц Найти похожие ветки
← →
Дельфятник (2003-04-18 10:42) [0]Подскажите, пожалуйста, можно ли это сделать с использованием TUpdateSQL, и если да, то как?
← →
Соловьев (2003-04-18 10:44) [1]если использовать delete from... то нет, но можно поробовать ХП.
← →
NAlexey (2003-04-18 10:47) [2]BD какая? Если ORACLE или MSSQL то там можно организовать каскадное удаление. при создании таблиц указать CASCADE ON DELETE или тоже самое сделать с помощью ALTER TABLE...
← →
Дельфятник (2003-04-18 11:01) [3]СУБД Oracle. Я хотел обойтись бех хранимой процедуры, но, видимо, всё-таки придётся её писать.
← →
Соловьев (2003-04-18 11:04) [4]а триггеры?
← →
Дельфятник (2003-04-18 11:06) [5]А как их использовать?
← →
NAlexey (2003-04-18 11:07) [6]>Я хотел обойтись бех хранимой процедуры, но, видимо, всё-таки придётся её писать.
Какой такой хранимой процедурой? Я же коворю что если таблицы связаны по ключу: PRIMARY KEY -> FOREIGN KEY то можно организовать каскадное удаление, когда удадаляя или изменяя запись в главной таблице удаляешь или меняешь записи в подчиненных автоматически.
← →
Соловьев (2003-04-18 11:21) [7]
> Какой такой хранимой процедурой?
delete from <table2> where
delete from <table3> where
...
delete from <table4> wherу
можно еще ичто там по присваивать.
хотя
> PRIMARY KEY -> FOREIGN KEY то
мороки меньше. Я так и делаю :))))
← →
NAlexey (2003-04-18 11:25) [8]>мороки меньше. Я так и делаю :))))
Ну это дело вкуса, не использовать ссылочную целостность много терять.
Вот пример справки из MSSQL, то же самое есть и в ORACLE когда я с ним работал конкретно использовал этот механизм.
Вешается на FOREIGN KEY и все...
ON DELETE CASCADE
Specifies that if an attempt is made to delete a row with a key referenced by foreign keys in existing rows in other tables, all rows containing those foreign keys are also deleted. If cascading referential actions have also been defined on the target tables, the specified cascading actions are also taken for the rows deleted from those tables.
← →
Соловьев (2003-04-18 11:33) [9]
> Ну это дело вкуса, не использовать ссылочную целостность
> много терять.
как раз я ее и использую. только у меня не Oracle...
← →
NAlexey (2003-04-18 11:37) [10]>как раз я ее и использую. только у меня не Oracle...
Точно, ошибочка вышла, не разобрался сразу. Показалось что ты используешь тот подход который описывал.
← →
Ihtiandr (2003-04-18 11:43) [11]А в ib как это можно организовать.
← →
Соловьев (2003-04-18 11:44) [12]
> Ihtiandr © (18.04.03 11:43
можно.
← →
Zacho (2003-04-18 12:32) [13]
> Ihtiandr © (18.04.03 11:43)
Читай Data Definition Guide -> Chapter 6 "Working with tables" -> Creating tables -> Defining integrity constraints -> Enforcing referential integrity with the FOREIGN KEY
← →
Reindeer Moss Eater (2003-04-18 12:44) [14]Подскажите, пожалуйста, можно ли это сделать с использованием TUpdateSQL, и если да, то как?
Можно.
TUpdateSQL.DeleteSQL.Add("Delete From FirstTable");
TUpdateSQL.DeleteSQL.Add("Delete From SecondTable");
.................
TUpdateSQL.DeleteSQL.Add("Delete From LastTable");
← →
kravchuk (2003-04-18 16:42) [15]>Reindeer Moss Eater (18.04.03 12:44)
и как, нормально получается таким образом скрипт выполнять? если да то поделись как, а то TUpdateSQL так не работает :0)
← →
Reindeer Moss Eater (2003-04-18 18:22) [16]TUpdateSQL так работает.
← →
kravchuk (2003-04-18 18:29) [17]>Reindeer Moss Eater (18.04.03 18:22)
да нифига, там нельзя вписывать скрипт, только одно SQL выражение.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.05.08;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.009 c