sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL 9.1 primärnyckel autoinkrement

serial är mer eller mindre en kolumntyp så att man säger integer serial är som att säga text text , säg bara serial :

CREATE TABLE IF NOT EXISTS "category" (
  "id" SERIAL PRIMARY KEY,
  "name" varchar(30) DEFAULT NULL
);

Om du vill skapa sekvensen själv så vill du göra standardvärdet för id nästa värde i sekvensen och det betyder att säga default nextval('your_seq') :

CREATE SEQUENCE your_seq;
CREATE TABLE IF NOT EXISTS "category" (
  "id" integer PRIMARY KEY default nextval('your_seq'),
  "name" varchar(30) DEFAULT NULL
);

För att simulera den vanliga serial beteende du vill också göra att sekvensen ägs av tabellen:

alter sequence your_seq owned by category.id;

Läser Serial Types avsnittet i manualen kan vara fruktbart.

Jag skulle också rekommendera att du inte dubbelciterar dina tabell- och kolumnnamn om du inte måste. PostgreSQL viker dina identifierare till små bokstäver så id och "id" kommer att vara samma sak men onödiga citat är en dålig vana som lätt kan leda till en stor röra av citat överallt.



  1. Infoga blob i Oracle-databasen med C#

  2. MySQL-fel 2006:mysql-servern har försvunnit

  3. Hur man använder HAVING-satsen i SQL

  4. Är MySQL Connector/JDBC tråd säker?