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中文网其他相关文章!