Wenn Sie eine ID-Anspruch wollen und schicken Sie es, können Sie nextval()
verwenden, die die Folge, ohne Daten einzufügen.
Beachten Sie, dass, wenn dies eine SERIAL
Spalte ist, müssen Sie die Reihenfolge der Namen auf der Tabellen- und Spaltennamen basiert finden, wie folgt:
Select nextval(pg_get_serial_sequence('my_table', 'id')) as new_id;
Es gibt keine gusseiserne Garantie von dem, was diese IDs bestellen kommt zurück (weil mehrere Sitzungen eine ID beanspruchen können und sie noch nicht verwenden oder sogar eine INSERT
zurücksetzen), aber es gibt eine Garantie, dass sie eindeutig sein werden, was normalerweise wichtig ist.
Wenn Sie dies oft tun, ohne die ID tatsächlich zu verwenden, werden Sie eventuell alle möglichen Werte der Spalte verbrauchen (dh die maximal darstellbare Ganzzahl erreichen), aber wenn Sie es nur verwenden, wenn es eine hohe Wahrscheinlichkeit gibt Wenn Sie eine Zeile mit dieser ID einfügen, sollte es OK sein.
werfen Sie einen Blick auf die nextval-Methode: http://www.postgresql.org/docs/8.1/static/functions-sequence.html –
In der Tat kann es alles über 'MAX (id) FROM the_table auswählen) ** Warum willst du es wissen? – wildplasser
Nun, ich mache ON DUPLICATE KEY-Emulation von MySQL .. es funktioniert wie folgt: php überprüft, ob wir eine ID in Objekt haben, das wir speichern möchten, wenn ja, dann okay, wenn nein, von db nächste ID, danach 'ON DUPLICATE KEY' Abfrage führt – Adrian