OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

PL/pgSQLについて

  • すぐに回答を!
  • 質問No.215398
  • 閲覧数249
  • ありがとう数0
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 43% (20/46)

お世話になっております。
PL/pgSQLでPostgreSQLのあるテーブルにinsertがかかったら、別のテーブルをtriggerを使ってupdateする構文を書いていますが、上手くいきません。
insertを実行すると、変数が割り当てられていない旨が表示されます。
サンプルは以下の通り
DROP FUNCTION k_trig();

CREATE FUNCTION k_trig() RETURNS OPAQUE AS'
DECLARE
ov1 RECORD;
ov2 RECORD;
BEGIN
SELECT * FROM 個別集計 INTO ov1 WHERE id = new.id;
UPDATE 個別集計 SET a1 = ov1.a1 + new.a1, a2 = ov1.a2 + new.a2, a3 = ov1.c + new.a3 WHERE id = new.id;
*****以下省略
insert実行

「record ov1 is unassigned yet」と表示されます。
declareで宣言しているのですが・・・

何が原因か教えてください
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全1件)

  • 回答No.1
レベル7

ベストアンサー率 42% (6/14)

>SELECT * FROM 個別集計 INTO ov1 WHERE id = new.id; >UPDATE 個別集計 SET a1 = ov1.a1 + new.a1, a2 = ov1.a2 + new.a2, a3 = ov1.c + new.a3 WHERE id = new.id; 個別集計TBLのデータに新規登録した値を加えるという処理を行いたいんですよね。それでした ...続きを読む
>SELECT * FROM 個別集計 INTO ov1 WHERE id = new.id;
>UPDATE 個別集計 SET a1 = ov1.a1 + new.a1, a2 = ov1.a2 + new.a2, a3 = ov1.c + new.a3 WHERE id = new.id;

個別集計TBLのデータに新規登録した値を加えるという処理を行いたいんですよね。それでしたら、下記のように1つのUPDATE文で実行可能ではないでしょうか?

UPDATE 個別集計 SET a1 = a1 + new.a1, a2 = a2 + new.a2, a3 = c + new.a3 WHERE id = new.id;

PL/SQL(Oracle8)の使用経験しかありませんので、なぜレコードが空なのかわかりませんが、今回の件についてはこれで解決するのではないでしょうか?
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ