powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Чем заменить subselect?
5 сообщений из 5, страница 1 из 1
Чем заменить subselect?
    #32971883
Чем правильнее заменить subselect в CHECK CONSTRAINT? PostgreSQL 8.0.
...
Рейтинг: 0 / 0
Чем заменить subselect?
    #32972585
фффф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вызовом функции, в которой написать проверку любой сложности.

Причем ограничение на сложность check сделано намеренно:
Appendix D. SQL Conformance
D.2. Unsupported Features
F671 Enhanced integrity management Subqueries in CHECK intentionally omitted
...
Рейтинг: 0 / 0
Чем заменить subselect?
    #32973244
> Вызовом функции, в которой написать проверку любой сложности.

Не будет невежливым попросить небольшой пример?

> Причем ограничение на сложность check сделано намеренно:

Понятно. В SQL-2003, однако, check constraint описан без таких ограничений. ;)
...
Рейтинг: 0 / 0
Чем заменить subselect?
    #32975025
фффф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пример (просто проверка существования записи в другой таблице):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE TABLE aaa(i int);
insert into aaa values ( 1 );
insert into aaa values ( 2 );
insert into aaa values ( 3 );

CREATE OR REPLACE FUNCTION check_aaa(int) RETURNS boolean AS $_$
  select exists(select * from aaa where i=$ 1 ); --сколь угодно сложный запрос
$_$ LANGUAGE sql;

CREATE TABLE bbb(i int CHECK(check_aaa(i)));

insert into bbb values ( 1 ); --ok
insert into bbb values ( 5 ); --new row for relation "bbb" violates check constraint "bbb_i_check"
...
Рейтинг: 0 / 0
Чем заменить subselect?
    #32975636
> Пример (просто проверка существования записи в другой таблице):

Т. е. вместо check constraint используется функция, возвращающая true или false; работает это так же, как и check constraint.

Спасибо за наглядный пример.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Чем заменить subselect?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]