sql >> データベース >  >> RDS >> Oracle

最後に挿入されたIDENTITYを取得します

    上手。 Oracleは、12cのIDENTITY機能にシーケンスとデフォルト値を使用します。したがって、質問のシーケンスについて知る必要があります。

    まず、テストIDテーブルを作成します。

    CREATE TABLE IDENTITY_TEST_TABLE
    (
      ID NUMBER GENERATED ALWAYS AS IDENTITY 
    , NAME VARCHAR2(30 BYTE) 
    );
    

    まず、このID列で作成されたシーケンス名を見つけましょう。このシーケンス名は、テーブルのデフォルト値です。

    Select TABLE_NAME, COLUMN_NAME, DATA_DEFAULT from USER_TAB_COLUMNS
    where TABLE_NAME = 'IDENTITY_TEST_TABLE';
    

    私にとって、この値は「ISEQ $$_193606」です

    いくつかの値を挿入します。

    INSERT INTO IDENTITY_TEST_TABLE (name) VALUES ('atilla');
    INSERT INTO IDENTITY_TEST_TABLE (name) VALUES ('aydın');
    

    次に、値を挿入してIDを見つけます。

    INSERT INTO IDENTITY_TEST_TABLE (name) VALUES ('atilla');
     SELECT "ISEQ$$_193606".currval from dual; 
    

    ID値が表示されます。 1つのブロックで実行する場合は、

    を使用します。
    declare
       s2 number;
     begin
       INSERT INTO IDENTITY_TEST_TABLE (name) VALUES ('atilla') returning ID into s2;
       dbms_output.put_line(s2);
     end;
    

    最後のIDは私のID列名です。



    1. Laravelで複数のデータベースを使用する方法

    2. MariaDBでのTIMEDIFF()のしくみ

    3. PostgreSQLでのpg_typeof()のしくみ

    4. 繰り返しなしでSQLiteからボタンにテキストをランダムに設定するにはどうすればよいですか?