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

Функция

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