powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Вставка. Замена значения на идентификатор
9 сообщений из 9, страница 1 из 1
Вставка. Замена значения на идентификатор
    #33231053
Proz22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую всех форумчан.

Прошу помощи в реализации следуюшего вида вставки:
Внешний запрос на вставку вида:

INSERT datatable (col1,col2,col3) VALUES ('firstname','lastname','Country')

Еще существует таблица вида:

| id | name |
| 1 | Russia |
| 2 | Latvia |
| 3 | Austria |

Собственно вопрос:
Как построить SQL запрос на вставку, чтобы вместо 'Country' вставлялся идентификатор, а не значение. Т.е. чтобы:

INSERT datatable (col1,col2,col3) VALUES ('Vladimir','Putin','Russia')

превратилось в:

INSERT datatable (col1,col2,col3) VALUES ('Vladimir','Putin','1')
...
Рейтинг: 0 / 0
Вставка. Замена значения на идентификатор
    #33231101
_Vlado
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Работу можно организовать так, что нужный id всегда известен
и такой вопрос никогда не возникает.
...
Рейтинг: 0 / 0
Вставка. Замена значения на идентификатор
    #33231163
Фотография Кувалдин Роман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Повесить триггер на INSERT, который будет выбирать значение из таблицы COUNTRIES и заменять название на идентификатор.
...
Рейтинг: 0 / 0
Вставка. Замена значения на идентификатор
    #33231222
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кувалдин РоманПовесить триггер на INSERT, который будет выбирать значение из таблицы COUNTRIES и заменять название на идентификатор.триггер это слишком. Написать хранимки, и не изгибхитряться писУя
INSERT datatable (col1,col2,col3) VALUES ('Vladimir','Putin','Russia');
в таблицу с полями (text,text,int4)
А вызывать
SELECT f_insert_datatable ('Грозный','Ванья','Рашша');
, которая проверив наличие Рашша в списке вернет трую (вставив) или фальш (не вставив).
...
Рейтинг: 0 / 0
Вставка. Замена значения на идентификатор
    #33231238
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тригер не поможет если col3 int и id int т.к. в инсерте на месте col3 будет varchar то запрос умрет с ошибкой на стадии подготовки и парсинга. в этом случае лучше написать функцию int CountryID(varchar); И вставлять как
insert into ... (...,col3) value (...,CountryID('Russia'));

полностью поддерживаю _Vlado
индефикаторы хранить в varchara'х это неправильно... и вообще есть сомнения по поводу правильности такой структуры бд..
...
Рейтинг: 0 / 0
Вставка. Замена значения на идентификатор
    #33231263
_Vlado
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну вы даёте!
Чел пытается подобно Трусу выдернуть нижний горшок из стопки,
а вы советуете ему поддержать стопку ;)
...
Рейтинг: 0 / 0
Вставка. Замена значения на идентификатор
    #33231278
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wbearтригер не поможет если col3 int и id int т.к. в инсерте на месте col3 будет varchar то запрос умрет с ошибкой на стадии подготовки и парсинга... руле, кааца, спасет отца р.д.. Но руле глючны по определению.
wbear в этом случае лучше написать функцию int CountryID(varchar); И вставлять как
insert into ... (...,col3) value (...,CountryID('Russia'));Можно и так,
но, тады несложно ваще бэз функций:
insert into ... (...,col3) valueS (...,(SELECT id FROM country WHERE name ='Russia' LIMIT 1));
(если не экономить на траффике)
...
Рейтинг: 0 / 0
Вставка. Замена значения на идентификатор
    #33231906
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с IMMUTABLE функцией работать в большенстве случаев будет быстрее чем с селектом.
...
Рейтинг: 0 / 0
Вставка. Замена значения на идентификатор
    #33232137
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wbearс IMMUTABLE функцией работать в большенстве случаев будет быстрее чем с селектом.низя, аяяй! (в этом контексте, думаеца). рази что STABLE

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


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