Da der tatsächliche Wert der Kommentar-ID Sie nicht interessiert (nur die Tatsache, dass es da ist und es ist einzigartig), serial
ist eine gute Wahl für eine solche Spalte. Beachten Sie, dass das Erstellen einer serial
in modernen PostgreSQL-Datenbanken (seit 7.3) nicht automatisch bedeutet, dass es eine eindeutige Einschränkung hat, so dass Sie dies explizit behandeln müssten. Z.B .:
CREATE TABLE comments (
comment_id SERIAL PRIMARY KEY,
user_id INT REFERENCES users(id), -- You should probably also index it
comment VARCHAR(200) -- Or any other reasonable size
)
EDIT:
Um die Frage in den Kommentaren beantworten könnte ein ähnliches Verhalten für eine UUID
Spalte erstellt werden, indem sie einen Standardwert eines neu generierten UUID
geben.
Zuerst müssen Sie das Paket postgres-contrib installieren (falls Sie es noch nicht installiert haben). ZB auf Red Hat basiert Linuxen, könnten Sie (als root) laufen:
$ dnf install postgresql-contrib
Dann von einem privilegierten Benutzer, müssen Sie die Erweiterung erstellen:
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
Dies wird eine generate_uuid_v1
Funktion erstellen Sie könnten verwenden:
CREATE TABLE comments (
comment_id UUID DEFAULT UUID_GENERATE_V1() PRIMARY KEY,
user_id INT REFERENCES users(id), -- You should probably also index it
comment VARCHAR(200) -- Or any other reasonable size
)
sowohl "UUID" und "SERIAL" sind in Postgres verwendbar. SERIAL erstellt eine Sequenz und weist eine Spalte beim Erstellen einer Tabelle zu –
danke für die Erklärung! – user1354934