PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Tworzenie ciągu, którego wartości są mieszanką znaków i cyfr

Coś takiego powinno być w porządku:

Utwórz sekwencję:

CREATE SEQUENCE special_seq;

Utwórz funkcję lub nie:

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

Teraz sprawdź, czy to działa:

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

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

Teraz możesz utworzyć tabelę za pomocą powyższej funkcji:

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

lub po prostu bez funkcji za pomocą prostego zapytania z funkcji:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zapobiec zmienianiu przez PostgreSQL moich ładnie sformatowanych definicji SQL?

  2. PostgreSQL:tworzenie wygenerowanej kolumny

  3. Instalacja PostgreSQL na OSX dla rozwoju Rails

  4. Powszechny sposób porównywania znaczników czasu w Oracle, PostgreSQL i SQL Server

  5. Indeks wielokolumnowy na 3 polach o heterogenicznych typach danych