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

SQLPlusAUTO_INCREMENTエラー

    これがOracleの標準機能ではないことに多くの人が不満を抱きますが、CREATE TABLEコマンドの後にさらに2つのコマンドを追加するだけの簡単な場合、すべての挿入で派手なSQLを使用する正当な理由がわかりません。遊んでください。

    SQL> CREATE TABLE test
    (id NUMBER PRIMARY KEY,
    name VARCHAR2(30));
    Table created.
    

    ここで、IDを自動インクリメントフィールドにすることを想定します。まず、値を取得するためのシーケンスが必要です。

    SQL> CREATE SEQUENCE test_sequence
    START WITH 1
    INCREMENT BY 1;
    Sequence created.
    

    これで、テーブルのBEFOREINSERTトリガーでそのシーケンスを使用できます。

    CREATE OR REPLACE TRIGGER test_trigger
    BEFORE INSERT
    ON test
    REFERENCING NEW AS NEW
    FOR EACH ROW
    BEGIN
    SELECT test_sequence.nextval INTO :NEW.ID FROM dual;
    END;
    /
    
    
    SQL> INSERT INTO test (name) VALUES ('Jon');
    1 row created.
    
    SQL> INSERT INTO test (name) VALUES (’Bork’);
    1 row created.
    
    SQL> INSERT INTO test (name) VALUES (’Matt’);
    1 row created.
    
    SQL> SELECT * FROM test;
    
    ID NAME
    ———- ——————————
    1 Jon
    2 Bork
    3 Matt
    


    1. 1093MySQLテーブルのエラーが2回指定されました

    2. MySQLからSQLServerへのデータとスキーマの移行

    3. 別のテーブルからIDを持つ行を選択する

    4. pythonはperlmySqlクエリより5倍遅い