1
在PostgreSQL數據庫中添加實體框架記錄時,如何覆蓋ID字段中的序列/序列?使用實體框架(C#)覆蓋PostgreSql中的串行序列
串行/順序自動遞增ID在添加記錄時工作正常,但我需要編寫一個遷移腳本,其中遷移的舊記錄必須保留其舊ID。
,如果我只是直接拍一個INSERT查詢到服務器,但與實體框架做的時候,他們只是從1,2,3等
在PostgreSQL數據庫中添加實體框架記錄時,如何覆蓋ID字段中的序列/序列?使用實體框架(C#)覆蓋PostgreSql中的串行序列
串行/順序自動遞增ID在添加記錄時工作正常,但我需要編寫一個遷移腳本,其中遷移的舊記錄必須保留其舊ID。
,如果我只是直接拍一個INSERT查詢到服務器,但與實體框架做的時候,他們只是從1,2,3等
啓動它工作正常,你應該在數據庫重置序列在使用自動生成的值插入之前。它高度依賴於表DDL。大多數使用的ID的autogen有兩個示例:
/*
-- Be careful with these 3 lines if you already have such objects in the your DB
drop table if exists t1;
drop table if exists t2;
drop sequence if exists seq_t2_id;
*/
-- Using serial type for ID
create table t1 (t1_id serial, t1_name char varying);
insert into t1 (t1_id, t1_name) values (22, 'aaa');
select setval(pg_get_serial_sequence('t1', 't1_id'), (select max(t1_id) from t1)); -- Reset serial value
insert into t1 (t1_name) values ('bbb');
select * from t1;
-- Using sequence to generate IDs
create sequence seq_t2_id;
create table t2(t2_id bigint default nextval('seq_t2_id'), t2_name char varying);
insert into t2(t2_id, t2_name) values (22, 'aaa');
select setval('seq_t2_id', (select max(t2_id) from t2)); -- Update sequence
insert into t2 (t2_name) values ('bbb');
select * from t2;
這不是問題所在。在開始插入記錄之前,我做了一個表的截斷,他們從1開始......但我不希望他們 - 我想在這種情況下爲插入選擇自己的ID。 – PeteFox