Поиск default constraint через INFORMATION_SCHEMA в SQL

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для определения ограничений, установленных по умолчанию на конкретный столбец, воспользуйтесь SQL-запросом, связывающим системные таблицы и таблицы каталога sys:

SQL
Скопировать код
SELECT 
    t.name AS TableName,
    c.name AS ColumnName,
    d.name AS ConstraintName,
    d.definition AS ConstraintDefinition
FROM 
    sys.default_constraints d
INNER JOIN 
    sys.columns c
ON 
    d.parent_object_id = c.object_id
    AND d.parent_column_id = c.column_id
INNER JOIN 
    sys.tables t
ON 
    d.parent_object_id = t.object_id
WHERE 
    c.name = 'YourColumnName'
    AND t.name = 'YourTableName';

Замените 'YourTableName' и 'YourColumnName' на фактические значения, чтобы найти название ограничения и их определение для указанного столбца. К сожалению, несмотря на то, что INFORMATION_SCHEMA является частью стандарта ISO, она не содержит информацию о ограничениях по умолчанию.

Почему предпочтительнее использовать системные вьюхи каталога?

В SQL Server ограничения по умолчанию не представлены в INFORMATION_SCHEMA. Для доступа к соответствующим данным используйте системные представления sys.

Выбор стратегии именования ограничений: Важна последовательность

Организуйте единообразную стратегию именования ограничений для облегчения управления изменениями схемы в будущем.

Управление ограничениями: Поиск, изменение и удаление

Чтобы модифицировать или удалить ограничение, вам необходимо знать его имя. В отличие от INFORMATION_SCHEMA, системные представления sys обеспечивают доступ к такой информации.

Визуализация: Графическое представление информации

Поиск значения ограничения по умолчанию можно сравнить с поиском определенного инструмента в большом ящике инструментов. Воспринимайте таблицы в INFORMATION_SCHEMA просто как различные инструменты, а CHECK_CONSTRAINTS — как мощное увеличительное стекло для поиска соответствующего ограничения.

Системные представления sys: Новое — всегда лучше

Если вы до сих пор используете устаревшие системные представления (sysobjects и syscolumns), рекомендуется мигрировать на современные представления каталога sys.

Работа со старыми версиями SQL Server

Если вы работаете с MS SQL Server 2000, имейте в виду, что системные представления sys в этой версии недоступны. Вам придется использовать INFORMATION_SCHEMA или искать дополнительные альтернативы, но помните об их ограниченности.

Взгляд в будущее: Межплатформенная совместимость и стандарты

Для обеспечения совместимости с последующими версиями SQL Server используйте стандартизированные методы поиска ограничений. В частности, sys является надежным стандартом сегодняшнего дня.

Эффективность запросов: Как найти указанное ограничение

Когда дело доходит до отслеживания и решения проблем с ограничениями, высокий уровень эффективности запросов становится критически важным. Не опирайтесь исключительно на INFORMATION_SCHEMA при поиске значений по умолчанию — используйте представления sys.

Полезные материалы для продолжения обучения

  1. System Information Schema Views (Transact-SQL) – SQL Server | Microsoft LearnДокументация Microsoft о использовании INFORMATION_SCHEMA.
  2. How to insert values into a table from a select query in PostgreSQL? – Database Administrators Stack ExchangeОбсуждение сообщества, посвященное использованию INFORMATION_SCHEMA.
  3. Capturing Graphical Query Plans with SQL Server Profiler — Информация о графических планах запросов SQL Server, полезных при анализе ограничений.