1
私はBOMテーブル(bomitem)のシーケンス番号を再配列するためにこの関数を作成しました。PostgreSQL関数
CREATE OR REPLACE FUNCTION seqincr(integer)
RETURNS SETOF bomitem AS
$BODY$
DECLARE
pItemid ALIAS FOR $1;
_row bomitem%ROWTYPE;
seqint int;
_id int;
BEGIN
seqint=8;
FOR _row IN SELECT *
FROM bomitem
WHERE ((bomitem_parent_item_id=pItemid))
LOOP
RETURN NEXT _row;
_id = _row.bomitem_id;
seqint = seqint+2;
update bomitem set bomitem_seqnumber = seqint where bomitem_id=_id;
END LOOP;
RETURN;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION seqincr(integer)
OWNER TO admin;
例は以下のように個々のbomitem_parent_item_id
上で動作:
SELECT * from seqincr(14917);
私はそれが全体のBOMテーブルをresequencesよう
SELECT distinct bomitem_parent_item_id FROM bomitem;
をループし、この機能を書き換えるしたいと思います。何をしようとする
申し訳ありません申し訳ありませんが、私はあなたの答えに気づくのにとても時間がかかりました。時間をとっていただきありがとうございます。ソリューションで起こるのは、部品表の各コンポーネントが同じbomitem_seqnumberを取得することです。各新しい部品表メッセージは、グループの番号に対応する次のより高い整数を取得します。私が必要とするのは、bomitem_seqnumberを増分して、請求書の最初の構成要素にbomitem_seqnumberが10、次の12、次の14などがあるようにすることです。 –
こんにちは、この質問で私を助けることができます:https://stackoverflow.com/questions/44318816/function-for-postgresql?noredirect=1#comment75643213_44318816?ありがとう –