Доступные версии документации

Информация об ограничениях целостности

Функция

Предоставление выражения для генерируемого столбца или ограничения целостности CHECK для других типов столбцов.

Спецификация
 
<тип информации>::=
<идентификатор таблицы>::=
<номер столбца>::=
Общие правила
  1. Параметр <идентификатор таблицы> задает системный идентификатор таблицы, об ограничениях целостности которой запрашивается информация. Системные идентификаторы таблиц хранятся в системной таблице $$$SYSRL, столбец $$$S11.

  2. Параметр <тип информации> задает тип запрашиваемой информации:

    • 1 – ограничение целостности CHECK;

    • 2 – выражение для генерируемого столбца.

  3. Параметр <номер столбца> определяет порядковый номер столбца заданной таблицы (начиная с 1).

  4. Если <номер столбца> не задан или равен 0, возвращаются ограничения целостности для всей таблицы.

  5. Аргументы могут быть заданы <SQL-параметром>, который должен содержать спецификацию типа данных параметра.

    select trim(linter_dict_info (? (int), ? (int), ? (int)));
    1
    537
    0
    |CHECK("I" > "J") |
Возвращаемое значение
  1. Символьная строка переменной длины VARCHAR(2048). Формат строки зависит от значения входных параметров:

    • <номер режима>=1, <номер столбца> больше 0:

      "CHECK(<выражение1>)<пробел> CHECK(<выражение2>)..."
    • <номер режима>=1, <номер столбца> равен 0:

      "CHECK(<выражение1>),CHECK(<выражение2>) ..."
    • <номер режима>=2, <номер столбца> больше 0:

      "<выражение для генерируемого столбца>"
  2. Пустая строка – если для столбца не задано условие CHECK, или он не является генерируемым столбцом, или он создан с атрибутом GENERATED AS IDENTITY.

Примеры
  1. Получить CHECK-выражение для всей таблицы

    CREATE or replace TABLE TST_CHECK (I INT, J INT, CHECK (I>J));
    
    select trim(linter_dict_info (1,$$$s11, 0)) from $$$sysrl
    where $$$s13='TST_CHECK';
    |CHECK("I" > "J") |
  2. Получить CHECK-выражение для заданного столбца

    CREATE or replace TABLE TST_CHECK (I INT CHECK (I>0) CHECK (I<10));
    select trim(linter_dict_info (1,$$$s11, 1)) from $$$sysrl
    where   $$$s13='TST_CHECK';
    |CHECK("I" > 0) CHECK("I" < 10) |
Заметили ошибку?
Выделите текст и нажмите Ctrl + Enter