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

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

DDD
發布: 2025-01-22 11:37:10
原創
356 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板