Postgresql-using-autoincrement
提供:Dev Guides
PostgreSQL-自動インクリメント
PostgreSQLには、smallserial、serial、_bigserial_のデータ型があります。これらは真の型ではなく、一意の識別子列を作成するための表記上の利便性にすぎません。 これらは、他のデータベースでサポートされているAUTO_INCREMENTプロパティに似ています。
_serial_列に一意の制約を設定するか、主キーにする場合は、他のデータ型と同様に指定する必要があります。
型名_serial_は、_integer_列を作成します。 タイプ名_bigserial_は、_bigint_列を作成します。 テーブルの有効期間中に2 ^ 31 ^を超える識別子の使用が予想される場合は、_bigserial_を使用する必要があります。 タイプ名_smallserial_は、_smallint_列を作成します。
構文
*SERIAL* dataypeの基本的な使用法は次のとおりです-
CREATE TABLE tablename (
colname SERIAL
);
例
COMPANYテーブルが次のように作成されることを考慮してください-
testdb=# CREATE TABLE COMPANY(
ID SERIAL PRIMARY KEY,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
ここで、次のレコードをテーブルCOMPANYに挿入します-
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( 'Paul', 32, 'California', 20000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ('Allen', 25, 'Texas', 15000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ('Teddy', 23, 'Norway', 20000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( 'Mark', 25, 'Rich-Mond ', 65000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( 'David', 27, 'Texas', 85000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( 'Kim', 22, 'South-Hall', 45000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( 'James', 24, 'Houston', 10000.00 );
これは7つのタプルをテーブルCOMPANYに挿入し、COMPANYは次のレコードを持ちます-
id | name | age | address | salary
----+-------+-----+------------+--------
1 | Paul | 32 | California | 20000
2 | Allen | 25 | Texas | 15000
3 | Teddy | 23 | Norway | 20000
4 | Mark | 25 | Rich-Mond | 65000
5 | David | 27 | Texas | 85000
6 | Kim | 22 | South-Hall | 45000
7 | James | 24 | Houston | 10000