Вы должны использовать Последовательности для автоматической генерации вашего основного идентификатора в базе данных при вставке новых объектов.
Для более подробного ответа (кода) мне нужно знать структуру таблицы wsmsmrs210
.
Как правило, если ваша таблица данных создается с помощью:
CREATE SEQUENCE sequence_name;
CREATE TABLE wsmsmrs210 (
epiphanyKey bigint default nextval('sequence_name'),
...
)
тогда ваш код должен выглядеть так:
NpgsqlConnection conn = new NpgsqlConnection("Server=localhost;Port=5432;User Id=postgres;Password=password;Database=epiphany;");
conn.Open(); // opens the connection
NpgsqlCommand cmd = new NpgsqlCommand("INSERT INTO wsmsmrs210 (transaction,license,dateOfActv,time) VALUES(:a,:b,:c,:d)", conn);
... // add parameters :a, :b, :c, :d via cmd.Parameters.Add(...) here
cmd.ExecuteNonQuery();
// Add next two lines if you need last inserted id in code
cmd = new NpgsqlCommand("SELECT CURRVAL('sequence_name')", conn);
var id = cmd.ExecuteScalar();
conn.Close();
Если вы хотите иметь максимальную надежность, вам следует написать хранимую функцию в PLPGSQL, которая будет принимать значения ваших полей в качестве входных параметров, вставлять значение в таблицу, получать последний идентификатор вставки и возвращать его.