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

文字と数字が混在する値のシーケンスを作成する

    このようなもので問題ないはずです:

    シーケンスを作成します:

    CREATE SEQUENCE special_seq;
    

    関数を作成するかどうか:

    CREATE OR REPLACE FUNCTION
    nextval_special()
    RETURNS TEXT
    LANGUAGE sql
    AS
    $$
        SELECT 'X'||to_char(nextval('special_seq'), 'FM0000'); 
    $$;
    

    それが機能するかどうかを確認します:

    SELECT nextval_special() FROM generate_series(1,10);
    
     nextval_special 
    -----------------
     X0001
     X0002
     X0003
     X0004
     X0005
     X0006
     X0007
     X0008
     X0009
     X0010
    (10 rows)
    

    これで、上記の関数を使用してテーブルを作成できます。

    CREATE TABLE test (
        id TEXT PRIMARY KEY DEFAULT nextval_special(),
        a int
    );
    

    または、関数からの単純なクエリで関数なしで:

    CREATE TABLE test (
        id TEXT PRIMARY KEY DEFAULT 'X'||to_char(nextval('special_seq'), 'FM0000'),
        a int
    );
    


    1. SQL Fiddleクエリの何が問題になっていますか?

    2. Mysqlトリガーを使用してテーブルを作成する

    3. トリガーの作成を許可するvsトリガーの作成を許可する

    4. cx_Oracleを使用して関数を呼び出すと、式が間違ったタイプになります