1

私は次のようにを定義しましたserial PRIMARY KEY

CREATE TABLE auth_event(
    id serial PRIMARY KEY,
    time_stamp TIMESTAMP,
    client_ip VARCHAR(512),
    user_id INTEGER REFERENCES auth_user (id) ON DELETE CASCADE,
    origin VARCHAR(512),
    description TEXT
);

インポートしているダンプには、次のようにシリアルフィールドの明示的な値があります。

INSERT INTO "auth_event" VALUES(6,'2012-12-03 21:50:49','127.0.0.1',181,'auth','User 181 Logged-in');
INSERT INTO "auth_event" VALUES(7,'2012-12-04 07:37:43','127.0.0.1',181,'auth','User 181 Logged-in');
INSERT INTO "auth_event" VALUES(8,'2012-12-05 11:42:28','127.0.0.1',181,'auth','User 181 Logged-in');
INSERT INTO "auth_event" VALUES(9,'2012-12-07 08:01:59','127.0.0.1',181,'auth','User 181 Logged-in');
INSERT INTO "auth_event" VALUES(10,'2012-12-07 16:32:58','127.0.0.1',181,'auth','User 181 Logged-in');
INSERT INTO "auth_event" VALUES(11,'2012-12-11 15:41:24','127.0.0.1',181,'auth','User 181 Logged-in');
INSERT INTO "auth_event" VALUES(12,'2012-12-11 22:55:08','127.0.0.1',181,'auth','User 181 Logged-in');

つまり、これによるとシーケンス値(に関連する値auth_event.id)は更新されません。

そして今、私の問題が発生します。私が使用しているフレームワークは、シリアルフィールドに値を与えていません。これは、postgresがデフォルト値を使用しており、更新されていないため、衝突が発生することを意味します。

auth_event.idインポート後に関連するシーケンス値を更新するにはどうすればよいですか?

4

1 に答える 1

2
select setval(pg_get_serial_sequence('auth_event' , 'id'), (select max(id) from auth_event) );
于 2013-01-17T10:15:04.593 に答える