|
Все CONSTRAINTS схемы одним SELECT`ом
#32461405
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
Ссылка на профиль пользователя:
|
Участник
Откуда: Kharkov
Сообщения: 316
|
|
Собственно, системную вьюху на подобный запрос хотелось бы иметь в любой схеме (то, о чем я говорил здесь):\r
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45.
\r
SELECT\r
rc.rdb$relation_name "TABLE" ,\r
rc.rdb$constraint_type "TYPE" ,\r
rc.rdb$constraint_name "NAME" ,\r
i1.rdb$field_name "FIELD" ,\r
t.rdb$trigger_source "CONDITION" ,\r
rc1.rdb$relation_name "R_TABLE" ,\r
i2.rdb$field_name "R_FIELD" ,\r
CASE refcon.rdb$update_rule\r
WHEN \'RESTRICT\' THEN \'NO ACTION\'\r
ELSE refcon.rdb$update_rule\r
END "ON_UPDATE" ,\r
CASE refcon.rdb$delete_rule\r
WHEN \'RESTRICT\' THEN \'NO ACTION\'\r
ELSE refcon.rdb$delete_rule\r
END "ON_DELETE" \r
FROM\r
rdb$relation_constraints rc\r
LEFT OUTER JOIN rdb$ref_constraints refcon\r
ON(rc.rdb$constraint_name=refcon.rdb$constraint_name)\r
LEFT OUTER JOIN rdb$relation_constraints rc1\r
ON(refcon.rdb$const_name_uq=rc1.rdb$constraint_name)\r
JOIN rdb$index_segments i1\r
ON (rc.rdb$index_name=i1.rdb$index_name)\r
LEFT OUTER JOIN rdb$index_segments i2\r
ON (rc1.rdb$index_name=i2.rdb$index_name)\r
LEFT OUTER JOIN rdb$check_constraints cc\r
ON (rc.rdb$constraint_name=cc.rdb$constraint_name AND\r
rc.rdb$constraint_type=\'CHECK\')\r
LEFT OUTER JOIN rdb$triggers t\r
ON (cc.rdb$trigger_name=t.rdb$trigger_name)\r
WHERE\r
(i1.rdb$field_position=i2.rdb$field_position OR i2.rdb$field_position IS NULL) And\r
rc.rdb$constraint_type IN(\'PRIMARY KEY\', \'UNIQUE\', \'CHECK\', \'FOREIGN KEY\') AND\r
(t.rdb$trigger_type= 1 OR t.rdb$trigger_type IS NULL)\r
ORDER BY\r
rc.rdb$relation_name,\r
CASE rc.rdb$constraint_type\r
WHEN \'PRIMARY KEY\' THEN 1 \r
WHEN \'FOREIGN KEY\' THEN 2 \r
WHEN \'CHECK\' THEN 3 \r
WHEN \'UNIQUE\' THEN 4 \r
END,\r
rc.rdb$constraint_name, i1.rdb$field_position\r
|
|
|