PostgreSQL 不支援其他資料庫系統(如 MySQL)中使用的 AUTO_INCREMENT
關鍵字。 嘗試使用它會導致語法錯誤。 本指南說明如何在 PostgreSQL 中實作自增主鍵。
PostgreSQL 10 及更新版本的建議方法是使用 IDENTITY
欄位。 與 SERIAL
欄位不同,IDENTITY
欄位透過 GENERATED BY DEFAULT
和 GENERATED ALWAYS
選項提供了更大的靈活性。
<code class="language-sql">CREATE TABLE staff ( staff_id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY, staff text NOT NULL );</code>
<code class="language-sql">ALTER TABLE staff ADD COLUMN staff_id int GENERATED ALWAYS AS IDENTITY;</code>
對於較舊的 PostgreSQL 版本(9.6 及以下),SERIAL
偽類型提供類似的自動遞增功能。
<code class="language-sql">CREATE TABLE staff ( staff_id serial PRIMARY KEY, staff text NOT NULL );</code>
SERIAL
自動建立並管理關聯序列,確保 staff_id
列的值唯一且遞增。
要對插入的值進行細微控制,甚至覆寫系統預設值或使用者提供的值,請在 OVERRIDING {SYSTEM|USER} VALUE
語句中使用 INSERT
。 這提供了超越簡單自動遞增的高階控制。
以上是為什麼PostgreSQL中AUTO_INCREMENT不起作用,如何實現ID自增?的詳細內容。更多資訊請關注PHP中文網其他相關文章!