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

Oracle SQLは、VARCHARインクリメントPKを自動的に作成します

    これは、 IDENTITYの適切な使用例です。 および仮想 列。したがって、追加のシーケンスは必要ありません。 およびトリガー

    デモ:

    CREATE TABLE sample (
        serial_no NUMBER GENERATED ALWAYS AS IDENTITY,
        tnt_id GENERATED ALWAYS AS (CONCAT('TNT', LPAD(serial_no, 5, '0'))) VIRTUAL,
        wtv    NUMBER(3)
    );
    
    insert into sample (wtv) values(100);
    insert into sample (wtv) values(200);
    insert into sample (wtv) values(300);
    

    結果:

    select * from sample;
    
     SERIAL_NO TNT_ID                         WTV
    ---------- ----------------------- ----------
             1 TNT00001                       100
             2 TNT00002                       200
             3 TNT00003                       300
    

    仕組み:

    1. NUMBER GENERATED ALWAYS AS IDENTITY :これにより、必要なシーケンスが自動的に作成され、1から始まり、デフォルトで1ずつ増加します。
    2. GENERATED ALWAYS AS VIRTUAL :これにより、他の列値を使用して値が自動的に計算される仮想列が作成されます。このデモでは、ID列を使用します。
    3. LPAD :これにより、列の値がインクリメントされている間、ゼロが埋め込まれたままになりますが、数値がインクリメントされたときに文字列の長さが増加しないことも保証されます。
    4. CONCAT :これはTNTを連結します 上記の値に。


    1. 結合を使用して選択から更新する方法

    2. MySQLで先頭/末尾の文字で文字列を埋める方法– LPAD()、RPAD()

    3. CakePHPでの空間データの処理

    4. PDOとphp-非オブジェクトでのメンバー関数prepare()の呼び出し