0
私はPOCOをビューにマッピングしました。 EFは、挿入を行う場合には、次のコマンドを生成...ビューに挿入してプライマリキーを返さない
INSERT INTO "public"."vw_place"("Name","Description","Point") VALUES ($1,$2,$3) RETURNING "PlaceId"
しかし、コードは、次のエラーをスロー...
は、挿入を行うトリガー機能です...{ "ヌルストア生成された値は、のために返されました非NULL可能メンバータイプの 'PlaceId' 'DataAccess.Place'。 "}ここで
CREATE OR REPLACE FUNCTION vw_place_dml()
RETURNS trigger AS
$BODY$
BEGIN
IF TG_OP = 'INSERT' THEN
INSERT INTO tbl_place
(
"Name",
"Description",
"Point"
)
VALUES
(
NEW."Name",
NEW."Description",
ST_GeomFromWKB(NEW."Point", 4326)
);
RETURN NEW;
ELSIF TG_OP = 'UPDATE' THEN
UPDATE tbl_place SET
"PlaceId" = NEW."PlaceId",
"Name" = NEW."Name",
"Description" = NEW."Description",
"Point" = ST_GeomFromWKB(NEW."Point", 4326)
WHERE
"PlaceId" = OLD."PlaceId";
RETURN NEW;
END IF;
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION vw_place_dml()
OWNER TO postgres;
これをpgAdminで実行すると、何も返されませんが問題はありますが、行は正常に挿入され、PlaceIdが生成されます。
INSERT INTO "public"."vw_place"("Name","Description","Point") VALUES
('ergw','regr','\x0101000000000000009846b2bfe4e068d7ff33a73f')
RETURNING "PlaceId"
これは同時実行セーフであるかどうかわかりません。 SQL Serverではそうではありません。 Doens't PostgresqlはSSの 'Scope_Identity'関数に相当しますか? –
そうだと思います。これはcurrvalに関してここで言及しています、https://www.postgresql.org/docs/8.2/static/functions-sequence.html、 "これはセッションローカルな値を返すので、他のセッションは現在のセッション以降にnextvalを実行しました。 –