postgresqlDBを使用しています。表に行を挿入してから、1回のpl/sql実行の最初の表に関連する外部キーを持つ別の表に別の行を挿入したいと思います。
問題は、2番目のテーブル行を挿入しようとすると、データベースは、最初のテーブルに挿入した行がまだコミットされていないため、存在しないと想定することです。私は何をしますか?
例:
REATE OR REPLACE FUNCTION "roomTypeCreate"(character varying, integer)
RETURNS refcursor AS
$BODY$
DECLARE
curr refcursor;
counter integer;
ids integer[];
current_id integer;
count integer;
BEGIN
SELECT COUNT(*) INTO counter FROM "RoomType" WHERE LOWER("type"::character varying) = LOWER($1::character varying);
IF (counter > 0) THEN
OPEN curr FOR
SELECT false AS "Status";
RETURN curr;
END IF;
INSERT INTO "RoomType"("type", "creator", "updater") VALUES ($1, $2, $2);
SELECT currval('"RoomType_id_seq"') INTO current_id;
SELECT ARRAY(SELECT id FROM "Rate" WHERE id>0) INTO ids;
count = 1;
WHILE ids[count] > 0
LOOP
INSERT INTO "RoomTypeRate"("type", "rate", "sun", "mon", "tue", "wed", "thu", "fri", "sat", "creator", "updater") VALUES(current_id, ids[count], 99999999, 99999999, 99999999, 99999999, 99999999, 99999999, 99999999, 0, 0);
count = count + 1;
END LOOP;
OPEN curr FOR
SELECT true AS "Status";
RETURN curr;
END
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;