-1
私は、3台を持っている。このように:PostgreSQLのトリガエラーをデバッグする方法 "クエリに結果データの宛先がありません"?
data_bukuテーブル私の表からの
+----+----------+----------------+
| kode_buku | * | * | stock |
+----+----------+----------------+
| 111 | * | * | 50 |
| 222 | * | * | 50 |
| 333 | * | * | 50 |
| 444 | * | * | 50 |
| 555 | * | * | 50 |
| 666 | * | * | 50 |
+----+-------+-----+----+--------+
data_pinjamテーブル
+---------------+----------------------------+
| no_transaksi | kode_buku | * | jumlah |
+---------------+-------------+----+---------+
| 1 | 111 | * | 3 |
| 1 | 222 | * | 2 |
| 1 | 333 | * | 4 |
+---------------+-------------+----+---------+
data_kembaliテーブル
+---------------+-----+----+---------+
| no_transaksi | * | * | status |
+---------------+-----+----+---------+
| 1 | * | * | back |
+---------------+-----+----+---------+
、私は関数を作成し、テーブルdata_kembaliでトリガーします。テーブルdata_kembaliにクエリを挿入する間、関数はテーブルdata_pinjamのno_transaksiがdata_pinjamと同じで、テーブルdata_bukuの在庫を更新するテーブルdata_pinjamのjumlahを合計するアクションを行います。各行は同じkode_buku値を持ちます。株式+ Jumlah。
私は
CREATE OR REPLACE FUNCTION kembali()
RETURNS TRIGGER AS
$BODY$
DECLARE
CURRENT_STOK INT4;
r data_pinjam%ROWTYPE;
BEGIN
FOR r IN
SELECT *
FROM data_pinjam p
WHERE p.no_transaksi = new.no_transaksi
LOOP
select CURRENT_STOK stock from data_buku where kode_buku = r.kode_buku;
CURRENT_STOK = CURRENT_STOK + r.jumlah;
UPDATE data_buku SET STOCK = CURRENT_STOK WHERE kode_buku = r.kode_buku;
END LOOP;
UPDATE data_pinjam SET status = 'kembali' WHERE no_transaksi = new.no_transaksi;
update data_transaksi set status = 'kembali' where no_transaksi = new.no_transaksi;
RETURN NEW;
END;
$BODY$
LANGUAGE PLPGSQL VOLATILE
COST 100;
関数を作成しますが、実行中にいる、出力
ERROR: query has no destination for result data
SQL state: 42601
Hint: If you want to discard the results of a SELECT, use PERFORM instead.
Context: PL/pgSQL function kembali() line 13 at SQL statement
は、誰かがループで更新のため、このトリガーおよび機能については私に助言することができますか?カーソルループで
"クエリには結果データがありません"というエラーメッセージが表示されます。しばしば、追加の 'AS'を提供します。 –
Evert