serial
は疑似です 実際のデータ型ではなく、データ型。 integer
その下に、いくつかの追加のDDLコマンドが自動的に実行されます:
- シーケンスを作成します(デフォルトでは名前が一致します)。
- 列を
NOT NULL
に設定します そして、そのシーケンスから描画するデフォルト。 - 列をシーケンスに「所有」させます。
詳細:
- Postgresのシリアル主キー列を使用するテーブルの名前を安全かつクリーンに変更しますか?
bigserial
同じで、bigint
を中心に構築されています 桁。 bigint
が必要です 、しかしあなたはすでにそれを達成しました。既存のserial
を変換するには bigserial
への列 (またはsmallserial
)、あなたがする必要があるのはALTER
することだけです 列のデータ型。シーケンスは通常、bigint
に基づいています 、したがって、同じシーケンスを任意のinteger
に使用できます タイプ。
bigint
を「変更」するには bigserial
に またはinteger
serial
に 、残りは手作業で行う必要があります:
- フィールド(レコードのIDではない)へのPostgreSQLシーケンスの作成
実際のデータ型は引き続きinteger
/ bigint
。 pgAdminのような一部のクライアントは、データ型serial
を表示します リバースエンジニアリングされたCREATE TABLE
スクリプト、serial
のすべての基準 満たされています。