sql >> Databasteknik >  >> RDS >> PostgreSQL

Skapa en sekvens där värdena är en blandning av tecken och siffror

Något sådant här borde vara bra:

Skapa sekvensen:

CREATE SEQUENCE special_seq;

Skapa en funktion, eller inte:

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

Kontrollera nu om det fungerar:

SELECT nextval_special() FROM generate_series(1,10);

 nextval_special 
-----------------
 X0001
 X0002
 X0003
 X0004
 X0005
 X0006
 X0007
 X0008
 X0009
 X0010
(10 rows)

Nu kan du skapa tabellen med funktionen ovan:

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

eller bara utan funktion med den enkla frågan från funktionen:

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


  1. Få räkning av främmande nyckel från flera tabeller

  2. Ansluta till Docker MySQL-behållare från localhost?

  3. mysql export sql dump alfabetiskt, vilket orsakar begränsningar av främmande nyckel under import

  4. SQL:Hur fyller man tomma celler med föregående radvärde?