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

From: Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>
To: john snow <ofbizfanster(at)gmail(dot)com>, pgsql-novice <pgsql-novice(at)postgresql(dot)org>
Subject: Re: does postgresql 10 have something similar to sql server's set identity_insert
Date: 2018-06-01 08:27:29
Message-ID: 1527841649.2475.18.camel@cybertec.at
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-novice

john snow wrote:
> 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();

You could create the identity column as

GENERATED BY DEFAULT AS IDENTITY

Then you simply insert DEFAULT for this column when you
want the generated value (or you don't specify the column
in the INSERT statement).

Yours,
Laurenz Albe
--
Cybertec | https://www.cybertec-postgresql.com

In response to

Browse pgsql-novice by date

  From Date Subject
Next Message Thomas Kellerer 2018-06-01 08:46:32 Re: does postgresql 10 have something similar to sql server's set identity_insert
Previous Message john snow 2018-05-31 09:15:29 does postgresql 10 have something similar to sql server's set identity_insert