set identity_insert
は必要ありません Postgresで。
データをテーブルに挿入するだけです。
ただし、実行する必要があるのは、setval()
を使用して、シリアル(「自動インクリメント」)列の背後にあるシーケンスを再同期することです。 機能:
select setval(pg_get_serial_sequence('my_table', 'my_serial_column'),
(select max(my_serial_column) from my_table)
);
列がserial
として定義されていない場合 ただし、「only」にはシーケンスから取得されたデフォルト値があるため、シーケンス名を「手動で」指定する必要があります
select setval('my_sequence_name', (select max(my_serial_column)
from my_table)
);
編集
SQLFiddleの例を次に示します。