powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Странное приведение типов
3 сообщений из 3, страница 1 из 1
Странное приведение типов
    #34656584
Thamerlan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pg 8.1.8
Проблема такая:
в plpgsql через execute создается RULE
Код: plaintext
1.
2.
3.
4.
5.
6.
      EXECUTE
               'CREATE OR REPLACE RULE блаблабла
               'WHERE NEW.game_code_fk = ''' || p_game_code || ''' \n' ||
               '  AND NEW.gtrx_type = '''||v_dbtcrdt_char||''' \n' ||
               'DO INSTEAD \n' ||
               'блабла';

Поле game_code_fk имеет тип VARCHAR(32), но потом просматривая rule definition я вижу:
Код: plaintext
1.
...  WHERE new.game_code_fk::text = 'xx'::text AND new.gtrx_type = 'A'::bpchar DO INSTEAD ...
хотя ожидал увидеть:
Код: plaintext
1.
...  WHERE new.game_code_fk = 'xx'::varchar AND new.gtrx_type = 'A'::bpchar DO INSTEAD ...

Даже если я делаю явное приведение типов
Код: plaintext
NEW.game_code_fk = ''' || p_game_code || '''::VARCHAR \n' ||
,
то всё равно получаю
Код: plaintext
1.
...  WHERE new.game_code_fk::text = 'xx'::character varying::text AND new.gtrx_type = 'A'::bpchar DO INSTEAD ...

Вопрос собственно один: почему так?
...
Рейтинг: 0 / 0
Странное приведение типов
    #34657833
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
Как я понимаю, varchar deprecated, потому мягко и ненавязчиво вас на тип text отправляют.
...
Рейтинг: 0 / 0
Странное приведение типов
    #34696355
Paramedic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В первый раз слышу, что varchar depricated
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Странное приведение типов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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