Где используются операторы в SQL - PullRequest
0 голосов
/ 01 июня 2009

У меня есть данные, используемые в основном в одной таблице в базе данных и ссылки на нее в нескольких разных таблицах. Мне нужно исправить данные. Можно ли написать оператор «где используется», который будет искать каждую таблицу в базе данных и возвращать все таблицы, на которые ссылаются данные?

Я использую SQL 2005.

Спасибо.

Ответы [ 5 ]

1 голос
/ 01 июня 2009

Я нашел это заявление SQL здесь :

SELECT OBJECT_NAME(OBJECT_ID) AS NameofConstraint,
SCHEMA_NAME(schema_id) AS SchemaName,
OBJECT_NAME(parent_object_id) AS TableName,
type_desc AS ConstraintType
FROM sys.objects
WHERE type_desc LIKE '%CONSTRAINT'
AND  OBJECT_NAME(OBJECT_ID) LIKE 'FK_%'

ПРИМЕЧАНИЕ: - Я называю все ограничения внешнего ключа, начиная с FK_ , поэтому их легко фильтровать.

0 голосов
/ 01 июня 2009

Вы можете выполнить обратный инжиниринг базы данных (см. эту публикацию для сценария, который делает это), если он имеет внешние ключи, физически присутствующие в базе данных. Если это не так, то вы готовы к ручной работе детектива.

Visio professional имеет инструмент для обратного инжиниринга базы данных. 2003 не очень хорошо работает с SQL Server 2005, поэтому вам потребуется:

  • Visio 2007

  • Измените сценарий, связанный с указанным выше, чтобы он не генерировал ссылки на схемы, и загрузите сценарий в базу данных SQL Server 2000. Затем обратный инженер из базы данных SQL 2000.

Если у вас нет внешних ключей или у вас неполное покрытие внешним ключом, вы можете искать их вручную (например, искать поля с похожими кодами для справочных данных) и вручную комментировать ключи на диаграмме. Не пытайтесь делать это с помощью инструмента построения диаграмм, который поставляется в SSMS, поскольку он может пытаться заполнить FK обратно в базу данных.

0 голосов
/ 01 июня 2009

Вы не можете сделать это после свершившегося факта, но во время разработки таблицы вы можете установить отношения для "ON UPDATE CASCADE".

0 голосов
/ 01 июня 2009

В Management Studio вы можете щелкнуть правой кнопкой мыши таблицу / просмотр / хранимую процедуру и выбрать Просмотр зависимостей. В окне зависимостей вы можете выбрать просмотр объектов, от которых зависит выбранный элемент, или просмотр элементов, которые зависят от выбранного элемента.

0 голосов
/ 01 июня 2009

Попробуйте добавить диаграмму в базу данных и поместите в нее все таблицы. Если я правильно истолковал ваш вопрос, вы пытаетесь понять схему базы данных, которая уже существует? Если вы используете диаграмму, она будет опираться на ссылки, которые позволят вам увидеть, где данные связаны в вашей структуре таблицы.

Что касается SQL, вы можете использовать объединения или условия для связи данных из разных таблиц.

Что вы пытаетесь «исправить»?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...