| 
 | 
| 
 
Как сделать грамотный инсерт большого кол-ва записей в две связанны таблицы 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Есть две связанные таблицы.  Вставку во вторую таблицу можно сделать только после того как узнаю автоинкрементированное значения id первой таблицы. Либо используя функцию nextval сначало узнать новое id, а потом вставлять сразу в две таблицы с этим id. Проблема: если втавляю, допустип, 100 записей в первую таблицу, то мне нужно сначало сделать 100 раз nextval. И только потом все инсёрты (в одном запросе). А можно ли как-нибудь сократить кол-во запросов к базе (не делать 100 раз nextval)? P.S.: блокировку таблицы делать нельзя. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 19.08.2003, 15:05 | 
  
  
  
   | 
||
| 
 
Как сделать грамотный инсерт большого кол-ва записей в две связанны таблицы 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  По-моему НУЖНО делать блокировку. А так делаешь один раз nextval, счетчик держишь у себя. Вставляешь данные через COPY (insert дольше) не по одной записи, а все сразу. Сначала в одну, потом в другую. потом пишешь что-то типа этого: SELECT pg_catalog.setval ('_s_rating_seq', 20149, true); - таблица, новое значение сиквенса, обновить. А счетчик в проге/sql/руками. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 19.08.2003, 18:36 | 
  
  
  
   | 
||
| 
 
Как сделать грамотный инсерт большого кол-ва записей в две связанны таблицы 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Если я правильно понял задачу, то: Код:  1. 2. 3. 4. 5. 6. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 19.08.2003, 22:58 | 
  
  
  
   | 
||
| 
 
Как сделать грамотный инсерт большого кол-ва записей в две связанны таблицы 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Спасибо за ответы! Но у вас обоих используется блокировка таблиц, но я её не могу делать. 2Vel: А без блокировки твой метод абсолютно не подходит, т.к. за то время пока мы будет вставлять все сто записей не факт что в эту же таблицу никто другой ничего не вставит. 2Sad Spirit: Теже возражения, но здесь время сжимается до минимума, т.е. время между: INSERT INTO table1 (...) VALUES (...); и INSERT INTO table2 ("foreign key", ...) VALUES (currval('table1_sequence'), ...); Как вы думаете этим временем можно пренебречь? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 20.08.2003, 07:08 | 
  
  
  
   | 
||
| 
 | 

start [/forum/topic.php?fid=53&fpage=364&tid=2008134]:  | 
    0ms | 
get settings:  | 
    8ms | 
get forum list:  | 
    13ms | 
check forum access:  | 
    4ms | 
check topic access:  | 
    4ms | 
track hit:  | 
    54ms | 
get topic data:  | 
    11ms | 
get forum data:  | 
    3ms | 
get page messages:  | 
    38ms | 
get tp. blocked users:  | 
    1ms | 
| others: | 10ms | 
| total: | 146ms | 

| 0 / 0 | 

    Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
    
    
    «На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
    
    
    ... ля, ля, ля ...