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のすべての基準 満たされています。