sqlite - 导入后更新 SERIAL 值

标签 sqlite postgresql

我已经定义了一个 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');

这意味着,根据 this序列值(与 auth_event.id 相关的值)将不会更新。

现在我的问题来了:我使用的框架没有为序列字段赋值。这意味着 postgres 正在使用默认值,并且由于尚未更新,因此发生了冲突。

如何在导入后更新与auth_event.id相关的序列值?

最佳答案

select setval(pg_get_serial_sequence('auth_event' , 'id'), (select max(id) from auth_event) );

关于sqlite - 导入后更新 SERIAL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14376665/

相关文章:

Android 内容提供商更新某些列

java - Hibernate 5 + Eclipse RCP + SQLite 3 - 无法将名称解析为策略 org.hibernate.dialect.Dialect

android - 具有内部连接的重复行

sql - 如何更新 n 行分区中的日期列?

mysql - 与 Azure 云数据库系统同步

ruby-on-rails - Sidekiq PG::UndefinedColumn:错误:不存在

android - 我是否需要在每次操作数据时调用 getWritableDatabase()

python - 与sqlite3并发写入

postgresql - Grails时间戳

php - 没有数据的数据库的PostgreSql复制结构