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

Функция

Предоставление выражения для генерируемого столбца или ограничения целостности 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) |