4 авг. 2010 г.

Проверка структуры базы на повреждения

В развитие предыдущего поста. В некоторых базах (но не всех!) из тех, где не проходит команда изменения домена или создания чека, ситуация еще хуже: несколько чеков из разных таблиц ссылаются на один и тот же системный триггер. Проверить можно с помощью такого запроса:
select *
from rdb$relation_constraints rc1 
  natural join rdb$check_constraints cc1
where cc1.rdb$trigger_name in
(
   select cc.rdb$trigger_name
   from rdb$relation_constraints rc 
     natural join rdb$check_constraints cc
   where rc.rdb$constraint_type = 'CHECK'
   group by cc.rdb$trigger_name
   having count(*) > 1
) 

2 комментария:

Анонимный комментирует...

На Yf такой запрос не проходит
Token unknown - line 3, column 2
natural

Andrei комментирует...

На Yaffil можете попробовать:

select
c.rdb$constraint_name,
t.*
from
rdb$check_constraints c join rdb$triggers t
on c.rdb$trigger_name = t.rdb$trigger_name
where
exists (
select *
from rdb$check_constraints c2 join rdb$triggers t2
on c2.rdb$trigger_name = t2.rdb$trigger_name
where
c2.rdb$constraint_name <> c.rdb$constraint_name
and c2.rdb$trigger_name = c.rdb$trigger_name)

Отправить комментарий