sql >> Databáze >  >> RDS >> PostgreSQL

Vytvoření sekvence, jejíž hodnoty jsou kombinací znaků a čísel

Něco takového by mělo být v pořádku:

Vytvořte sekvenci:

CREATE SEQUENCE special_seq;

Vytvořte funkci nebo ne:

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

Nyní zkontrolujte, zda to funguje:

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

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

Nyní můžete vytvořit tabulku pomocí výše uvedené funkce:

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

nebo jen bez funkce s jednoduchým dotazem z funkce:

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


  1. Upozornit na spouštěcí událost v pglogical replikované tabulce

  2. Hledání omezení primárního klíče za běhu v SQL Server 2005

  3. Ověření jedinečnosti v databázi, když má ověření podmínku na jiné tabulce

  4. SQL vyberte max(datum) a odpovídající hodnotu