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

挿入ステートメントにIDがないOracle/PostgreSQLのシーケンス

    Oracle 12cでは、ID列 が導入されています。 :

    CREATE TABLE SOMEUSERS (
      SOMEUSERS_ID       NUMBER(10) GENERATED ALWAYS AS IDENTITY
                         CONSTRAINT SOMEUSERS__SOMEUSERS_ID__PK PRIMARY KEY,
      SOMEUSERS_NAME     VARCHAR2(50)
                         CONSTRAINT SOMEUSERS__SOMEUSERS_NAME__NN NOT NULL,
      SOMEUSERS_PASSWORD VARCHAR2(50)
    );
    

    以前のバージョンでそれを実行したい場合は、トリガーとシーケンスが必要になります:

    CREATE TABLE SOMEUSERS (
      SOMEUSERS_ID       NUMBER(10)
                         CONSTRAINT SOMEUSERS__SOMEUSERS_ID__PK PRIMARY KEY,
      SOMEUSERS_NAME     VARCHAR2(50)
                         CONSTRAINT SOMEUSERS__SOMEUSERS_NAME__NN NOT NULL,
      SOMEUSERS_PASSWORD VARCHAR2(50)
    );
    /
    
    CREATE SEQUENCE gen_id_someUsers START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
    /
    
    CREATE OR REPLACE TRIGGER SOMEUSERS__ID__TRG 
    BEFORE INSERT ON SOMEUSERS
    FOR EACH ROW
    BEGIN
      :new.SOMEUSERS_ID := gen_id_someUsers.NEXTVAL;
    END;
    /
    

    その後、次のことを実行できます(ID列またはトリガーをシーケンスと組み合わせて):

    INSERT INTO SOMEUSERS (
      SOMEUSERS_NAME,
      SOMEUSERS_PASSWORD
    ) VALUES (
      'Name',
      'Password'
    );
    


    1. WildflyがOracleDriverのモジュールのロードに失敗しました

    2. Laravel:ネストされたhasManyリレーションシップ(hasManyThrough)の平均を取得する方法

    3. MySQLからシェルコマンドを実行する

    4. 既存の接続を使用するようにmybatisを構成する