電子書籍の厳選無料作品が豊富!

OracleのPL/SQLを勉強し始めたものですが、質問させていただきます


あるテーブルにINSERT文を使ってデータを追加するストアドファンク

ションを作成しています。
そのINSERT文の中に、ある列(NUMBER型)の今現在の最大値にプラス1し

て新規にレコードを追加するという処理を入れる方法を探しています



BEGIN
INSERT INTO USER.テーブル1 VALUES (項目1,
項目2,
項目3
);
END

項目2に対応するテーブルの列の最大値を取得し、項目2に値を入れるには
どのような方法があるでしょうか?

方法や手順等を教えてくださる方お願いします。

A 回答 (2件)

スカラー副問い合わせ式が使えるバージョンならば直接 SELECT文を組み込めたと思います。


PL/SQLなら別ステートメントで変数にINTOしても良いのではないでしょうか。
ただ、どちらもトランザクションが並行すると取得した値が重複します。
それがシステムで問題になるならユニークキーを設置したり例外処理は必要になりますね。
    • good
    • 0

追加


INSERT INTO ... SELECT MAX(c+1), リテラル FROM テーブル
という書式もありましたね。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
参考にして解決することができました。

お礼日時:2007/05/17 07:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!