首頁 >資料庫 >mysql教程 >為什麼PostgreSQL中AUTO_INCREMENT不起作用,如何實現ID自增?

為什麼PostgreSQL中AUTO_INCREMENT不起作用,如何實現ID自增?

DDD
DDD原創
2025-01-22 11:37:10399瀏覽

Why Doesn't AUTO_INCREMENT Work in PostgreSQL, and How Can I Achieve Auto-Incrementing IDs?

PostgreSQL AUTO_INCRMENT 故障排除

PostgreSQL 不支援其他資料庫系統(如 MySQL)中使用的 AUTO_INCREMENT 關鍵字。 嘗試使用它會導致語法錯誤。 本指南說明如何在 PostgreSQL 中實作自增主鍵。

PostgreSQL 10 及更高版本:使用 IDENTITY 欄位

PostgreSQL 10 及更新版本的建議方法是使用 IDENTITY 欄位。 與 SERIAL 欄位不同,IDENTITY 欄位透過 GENERATED BY DEFAULTGENERATED ALWAYS 選項提供了更大的靈活性。

建立帶有 IDENTITY 欄位的表格

<code class="language-sql">CREATE TABLE staff (
  staff_id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
  staff    text NOT NULL
);</code>

新增 IDENTITY 欄位

<code class="language-sql">ALTER TABLE staff ADD COLUMN staff_id int GENERATED ALWAYS AS IDENTITY;</code>

PostgreSQL 9.6 及更早版本:使用 SERIAL

對於較舊的 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn