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

полностью поддерживаю _Vlado
индефикаторы хранить в varchara'х это неправильно... и вообще есть сомнения по поводу правильности такой структуры бд..
...
Рейтинг: 0 / 0
24.08.2005, 10:43
    #33231263
_Vlado
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка. Замена значения на идентификатор
Ну вы даёте!
Чел пытается подобно Трусу выдернуть нижний горшок из стопки,
а вы советуете ему поддержать стопку ;)
...
Рейтинг: 0 / 0
24.08.2005, 10:51
    #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
24.08.2005, 14:37
    #33231906
wbear
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка. Замена значения на идентификатор
с IMMUTABLE функцией работать в большенстве случаев будет быстрее чем с селектом.
...
Рейтинг: 0 / 0
24.08.2005, 15:49
    #33232137
4321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка. Замена значения на идентификатор
wbearс IMMUTABLE функцией работать в большенстве случаев будет быстрее чем с селектом.низя, аяяй! (в этом контексте, думаеца). рази что STABLE

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


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