Re: does postgresql 10 have something similar to sql server's set identity_insert

Thomas Kellerer <[email protected]>
Newsgroups gmane.comp.db.postgresql.novice
Message-ID <[email protected]>
john snow schrieb am 31.05.2018 um 11:15:
> to temporarily allow explicit values to be inserted into the identity
> column of a table to facilitate the generation of test data from
> application code?
> 
> using sql, i know it's possible to issue INSERTs with OVERRIDING
> SYSTEM VALUE clause to fill identity columns with user-specified
> values. but i'm using an ORM (object-relation mapper) Framework from
> Microsoft (Entity Framework Core 2.1)  and a C# test data generator
> library, and i'm generating "data aggregates" that have foreign key
> relationships so it would be a great convenience if I could save test
> data with known primary and foreign key values to the database as
> this would make it easier for me to make assertions about my data.
> 
> ideally, i'm looking for something like this:
> 
> myDbContext.Database.ExecuteSqlCommand("...");  //ask postgresql to allow explicit id values for inserts from here on
> var testData = CreateTestData();
> myDbContext.MyEntity.AddRange(testData);
> myDbContext.SaveChanges();
> 

If you use a serial or identity column you can just insert your rows.
There is no need to "turn on" (or off) anything.

But you _have_ to synchronize the underlying sequence after you do that:

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

Thomas
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.