私のベーステーブルの構造は次のようになります。
CREATE TABLE EXAMPLE_TABLE
{
ID NUMBER NOT NULL,
-- その他の列はこちら,
CREATE_USER VARCHAR2(255 BYTE) NOT NULL,
CREATE_DATE DATE DEFAULT SYSDATE NOT NULL,
UPDATE_USER VARCHAR2(255 BYTE),
UPDATE_DATE DATE
}
私がしたいのは、update_date または create_date が最も高い行の ID を選択することです。したがって、次のようなものです (これは機能しませんが、pID はストアド プロシージャの out 変数として定義されます)。
SELECT ID, MAX(GREATEST(CREATE_DATE, UPDATE_DATE) as LAST_MODIFIED
FROM EXAMPLE_TABLE
RETURNING ID INTO pID;
これは、基本的に、テーブルで変更された最後の行の 1 つの ID を返します。少し助けて?
PS これは Oracle11g にあります。現在、MERGE を使用して行をテーブルにアップサートし、このメソッドを使用して最後にアップサートされた行の ID を取得しています。これについて建設的な批判がある場合 (別の解決策がある可能性があります)、私はすべて耳を傾けます。なぜこれが良い/悪いのかについて、私は多くの議論を読みました。この手順を C# で呼び出すので、その他のヒントを教えていただければ幸いです。