|
перекодировки и генераторы
|
|||
---|---|---|---|
#18+
Помогите новичку... Решил тут постгрес пользовать в качестве основной субд, но сразу возник маленький вопросик относительно перекодировки: все клиенты базы пишут в базу в win1251, если я захожу в базу на сервере скажем psql -d dbase и делаю там всякие выборки, то всё русское я естесно вижу в каракулях т.к. на сервере всё же koi8-r... пробовал играться с параметрами \encoding win1251 скажем, SET CLIENT_ENCODING = 'win1251'\g и прочее, но всё это не оказывало никакого положительного эффекта :( а переменная SERVER_ENCODING вообще не ставится и в доке сказано что ставится она только на стадии initdb, что это и где это не понял... Помогите плиз... И еще вопросик касаемо генераторов... в свое время бился с ними в IB и MSAccess... в первом более-менее корректный выход был найдет... во втором случае всё плохо... а как обстоит дело в постгресе? Подскажите наиболее правильный способ получания уникального id... с тем чтобы его было видно по какому-нибудь sql запросу клиента... ну или вообще какие варианты? авто-инкрементное поле точно не подойдет... Заранее благодарен за помощь! ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2003, 17:55 |
|
перекодировки и генераторы
|
|||
---|---|---|---|
#18+
Начёт первого не скажу, опыта маловато, но вероятно при установке базы устанавливается и кодировка в конфигирационном файлике. А вот второе это очень легко, прочитай в хелпе про CREATE SEQUENCE там всё нормальненько разъяснено и начальное значение можно задать и ещё кое что. Успехов. Да книжечка на английском можно здесь посмотреть: http://www.commandprompt.com/ppbook/ ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2003, 23:13 |
|
перекодировки и генераторы
|
|||
---|---|---|---|
#18+
Вот тут вроде уже было :))\r \r /topic/14453 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2003, 23:17 |
|
перекодировки и генераторы
|
|||
---|---|---|---|
#18+
Ага, спасибо! Я правда еще вчера ночью поковырял все эти "генераторы"... вроде бы всё понятно... Единственное чего я не уяснил так это запрос SELECT следующий за INSERT'ом... Т.е. в хелпе так написано... И еще вопрос такой - как будет вести себя запрос типа: insert into test values ((select nextval('test_id_seq') from test_id_seq), 'lalala', 'lalala2'); Т.е. мне бы на клиентской стороне неплохо было бы сразу получить значение select'а :-))) Возможно ли это? Cya! ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2003, 09:56 |
|
перекодировки и генераторы
|
|||
---|---|---|---|
#18+
Что то не совсем понимаю зачем нужна вот эта кострукция: (select nextval('test_id_seq') from test_id_seq) Может бы кто ещё разберётся. Мы в своём проекте делами так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Причём как видно из INSERT INTO мы пропускали par_id и kliendiid Ну если что ещё попытаюсь разъяснить, а может кто это полегче делает. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2003, 20:06 |
|
перекодировки и генераторы
|
|||
---|---|---|---|
#18+
забыл добавить , пропускали par_id и kliendiid потому что они генерируются автоматом. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2003, 20:07 |
|
перекодировки и генераторы
|
|||
---|---|---|---|
#18+
Вы пропускали par_id и kliendiid потому как они генерируются автоматом и очевидно они вам не нужны... А мне необходимо сразу же и гарантированно получить свежесгенерированый id... :) То есть если я сделаю некий инсерт в таблицу и затем сразу же селект этого id совсем не факт что я получу именно тот id ибо в момент времени инсертов может быть сделано вагон... таким образом и потому что я чайник мне приходится сперва делать селект следующего в генераторе значения инкрементируя тем самым значение генератора чтобы гарантировать себе то что выбраный id уже никем не будет занят... далее уже использовать id в инсерте... о как... теперь с нетерпением жду классное и ГРАМОТНОЕ решение вышеописаной задачи :-) Cya! ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2003, 22:17 |
|
перекодировки и генераторы
|
|||
---|---|---|---|
#18+
Думаешь, разработчики Postgres такие наивные :) Из документации по функциям (functions-sequence.html, раскраска моя): currval Return the value most recently obtained by nextval for this sequence in the current session. (An error is reported if nextval has never been called for this sequence in this session.) Notice that because this is returning a session-local value, it gives a predictable answer even if other sessions are executing nextval meanwhile. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2003, 10:28 |
|
перекодировки и генераторы
|
|||
---|---|---|---|
#18+
To: SSY Ну хотелось бы верить в то что это действительно так :-) Но честно говоря мне как-то боязно проверять работает ли это так как задумано :) И вообще даже если и юзать функцию curval, то в чем собственно преимущество select currval('table_id_seq'); перед select nextval('table_id_seq'); ? Разница лиш в том, что в первом случае имеем возможность получить id после inserta, во втором случае до инсерта... суть имхо не меняется... или я что-то где-то недопонял? Cya! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2003, 17:15 |
|
перекодировки и генераторы
|
|||
---|---|---|---|
#18+
> Ну хотелось бы верить в то что это действительно так :-) > Но честно говоря мне как-то боязно проверять работает ли > это так как задумано :) Ну, если это не так - пиши в кузницу, потому как это будет страшный баг :) > Разница лиш в том, что в первом случае имеем возможность > получить id после inserta, во втором случае до инсерта... > суть имхо не меняется... или я что-то где-то недопонял? Недопонял. Вызов currval не приводит к приращению последовательности, поэтому её можно использовать после nextval сколько угодно раз в любом месте для получения кода, сгенерированного в самый последний раз. Промежуточная переменная для хранения этого кода здесь уже не нужна. Это во многих случаях позволяет использовать не функцию, а простую последовательность SQL операторов. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2003, 11:53 |
|
|
start [/forum/topic.php?fid=53&fpage=367&tid=2008261]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 235ms |
total: | 376ms |
0 / 0 |