Можно ли сделать INSERT в несколько таблиц в рамках одного запроса в PostgreSQL
Python
Middle
Arendadata
Можно ли сделать INSERT в несколько таблиц в рамках одного запроса в PostgreSQL
Ответы
Да, в PostgreSQL можно выполнить INSERT в несколько таблиц в рамках одной транзакции, но не одним SQL-запросом. Для этого используются:
- Транзакции (BEGIN/COMMIT):
```
BEGIN;
INSERT INTO table1 (col1) VALUES ('val1');
INSERT INTO table2 (col2) VALUES ('val2');
COMMIT;
```
- CTE (WITH запросы):
```
WITH ins1 AS (
INSERT INTO table1 (col1) VALUES ('val1') RETURNING id
)
INSERT INTO table2 (col2, table1_id)
SELECT 'val2', id FROM ins1;
```
- Хранимые процедуры.
Важно: это разные подходы с разными особенностями. CTE позволяет использовать результат первого INSERT во втором, а транзакция гарантирует атомарность.