Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Удаление каскадом.  [new]
sancoma
Member

Откуда:
Сообщений: 149
Помогите разобраться в ситуации.

Есть таблица-справочник, напр.

T(id int, field varchar(10))


Есть N таблиц которые все на эту таблицу T завязаны, т.е. используют T.id у себя в каком-то поле.

Идея в том чтоб сделать удаление записи в таблице-справочнике T если никакая с N таблиц не использует конкретное T.id.

Я так понимаю надо смотреть в сторону каскадного удаления, плюсы, минусы, варианты?
24 дек 13, 01:58    [15337049]     Ответить | Цитировать Сообщить модератору
 Re: Удаление каскадом.  [new]
sdet
Member

Откуда:
Сообщений: 463
sancoma
Помогите разобраться в ситуации.

Есть таблица-справочник, напр.

T(id int, field varchar(10))


Есть N таблиц которые все на эту таблицу T завязаны, т.е. используют T.id у себя в каком-то поле.

Идея в том чтоб сделать удаление записи в таблице-справочнике T если никакая с N таблиц не использует конкретное T.id.

Я так понимаю надо смотреть в сторону каскадного удаления, плюсы, минусы, варианты?

А зачем удалять запись в справочнике? Если никакая с N таблиц не использует конкретное T.id то при чем здесь каскадное удаление?
24 дек 13, 02:08    [15337066]     Ответить | Цитировать Сообщить модератору
 Re: Удаление каскадом.  [new]
sancoma
Member

Откуда:
Сообщений: 149
sdet,

удалять надо чтоб мусора небыло. Тригером как-то не хочеться чистить такие.
24 дек 13, 02:09    [15337068]     Ответить | Цитировать Сообщить модератору
 Re: Удаление каскадом.  [new]
sdet
Member

Откуда:
Сообщений: 463
sancoma
sdet,

удалять надо чтоб мусора небыло. Тригером как-то не хочеться чистить такие.

Если никакая с N таблиц не использует конкретное T.id, то и удалите этот мусор из справочника
24 дек 13, 02:14    [15337076]     Ответить | Цитировать Сообщить модератору
 Re: Удаление каскадом.  [new]
sancoma
Member

Откуда:
Сообщений: 149
sdet
sancoma
sdet,

удалять надо чтоб мусора небыло. Тригером как-то не хочеться чистить такие.

Если никакая с N таблиц не использует конкретное T.id, то и удалите этот мусор из справочника


Для этого надо делать джоб отдельный с интервалом раз в хз скоко или каждой с N таблиц которые используют справочник вешать тригер и в каждом проверять остальные N-1 таблиц на наличие T.id конкретного.

думал может можно сделать при каскадном удалении реф на несколько таблиц, чтом в N таблицах пониторилось поле и испльзывание T.id
24 дек 13, 02:22    [15337086]     Ответить | Цитировать Сообщить модератору
 Re: Удаление каскадом.  [new]
sdet
Member

Откуда:
Сообщений: 463
sancoma
sdet
пропущено...

Если никакая с N таблиц не использует конкретное T.id, то и удалите этот мусор из справочника


Для этого надо делать джоб отдельный с интервалом раз в хз скоко или каждой с N таблиц которые используют справочник вешать тригер и в каждом проверять остальные N-1 таблиц на наличие T.id конкретного.

думал может можно сделать при каскадном удалении реф на несколько таблиц, чтом в N таблицах пониторилось поле и испльзывание T.id

С чего вы взяли что определенный T.id не будет использоваться позднее? Справочники обычно редактируются через интерфейс
24 дек 13, 02:29    [15337095]     Ответить | Цитировать Сообщить модератору
 Re: Удаление каскадом.  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
sancoma
думал может можно сделать при каскадном удалении реф на несколько таблиц, чтом в N таблицах пониторилось поле и испльзывание T.id
Каскад не даёт бесплатное определение без запросов что данная строка нигде не используется.
Каскад как раз тупо удалит это значение/строку в тех N таблиц если она вдруг присутствовало.

Вам при любом раскладе надо делать запросы чтобы определить какие ID не используются (надо удалить/скрыть).

Между вставкой в справочник и вставкой в таблицы всегда есть промежуток времени когда "не используется".
Всегда есть вероятность что удаление/изменение строки в таблах приводит к "неиспользованности записи справочника".

Почему вас не устраивает JOB?

Вы занимаетесь ерундой. ИМХО.
25 дек 13, 04:41    [15343113]     Ответить | Цитировать Сообщить модератору
 Re: Удаление каскадом.  [new]
SFlash
Member

Откуда:
Сообщений: 143
Mnior,

А чем вам не угодили несколько лишних записей в справочнике? Погоды они не делают, а геммороя могут много принести.... потом... )))
А завтра они понадобяться, а их нет, что тогда? Опять заводить?
Или как вариант, через некоторые время решите переделать базу, чтоб не росла постоянно, старые данные в архив убирать (вообще на другой сервер, базу), а просмотр сделать вьюшкой сцепляющие архивные данные и продакшн, а в справочнике нет информации уже? Все прилыли )))
25 дек 13, 16:04    [15346222]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить