Postgres 9.1 CTE, , , :
WITH x AS (
INSERT INTO restaurant(name, x, y)
SELECT 'restaurantname', valuex, valuey
WHERE NOT EXISTS (SELECT 1 FROM restaurant WHERE name = 'restaurantname')
RETURNING rest_id
)
, y AS (
INSERT INTO restaurant_location(rest_id, ...)
SELECT rest_id, ...
FROM x
)
INSERT INTO restaurant_foodtype(rest_id, ...)
SELECT rest_id, ...
FROM x;
INSERT , " " . - , . UNIQUE restaurant.name ( ), , , , , ( ). , , .
RETURNING rest_id - , rest_id .
INSERT , .
INSERT.
PostgreSQL 8.1 plpgsql .
, , .