首頁 >資料庫 >mysql教程 >如何在PostgreSQL中實現自動遞增列?

如何在PostgreSQL中實現自動遞增列?

Patricia Arquette
Patricia Arquette原創
2025-01-22 11:27:081013瀏覽

How to Implement Auto-Incrementing Columns in PostgreSQL?

PostgreSQL 自動遞增列的實作方法詳解

在 PostgreSQL 中建立表格時,您可能會在嘗試為主鍵列使用 AUTO_INCREMENT 選項時遇到錯誤。本文深入探討了這個問題,並提供了自動遞增表列的全面解決方案。

AUTO_INCREMENT 語法錯誤

遇到的錯誤訊息表示與 AUTO_INCREMENT 關鍵字相關的語法錯誤。 PostgreSQL 不支援 AUTO_INCREMENT 關鍵字。相反,它採用不同的技術來自動產生主鍵值。

PostgreSQL 10 及更高版本:IDENTITY 欄位

對於 PostgreSQL 10 及更高版本,自動遞增主鍵的首選方法是 IDENTITY 欄位。 IDENTITY 欄位是特殊類型的資料列,它會為每一行自動產生唯一值。

要建立具有 IDENTITY 欄位的資料表:

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

GENERATED ALWAYS 子句確保即使在 INSERT 語句中明確提供值,列值也會自動產生。

PostgreSQL 9.6 及更低版本:serial 欄位

對於 PostgreSQL 9.6 及更低版本,serial 偽資料類型可用於自動遞增主鍵。 serial 列在背景建立一個序列對象,並自動將列的預設值設定為序列中的下一個值。

要建立具有 serial 欄位的表:

<code class="language-sql">CREATE TABLE staff (
  staff_id serial PRIMARY KEY,
  staff text NOT NULL
);</code>

覆蓋預設值

IDENTITY 和 serial 欄位都會自動產生值,但您可以在 INSERT 陳述式中使用 OVERRIDING SYSTEM|USER VALUE 語法覆寫這些值。

附加說明

  • 建議在 PostgreSQL 10 及更高版本中使用 IDENTITY 欄位而不是 serial 欄位。
  • 在 PostgreSQL 中,首選合法的、小寫的、未加引號的標識符,以簡化資料庫管理。

以上是如何在PostgreSQL中實現自動遞增列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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