2015-10-28 1 views
0

Я хочу добавить строки в таблицу с серийным «ID».Как вставить запись, имеющую серийный номер в таблице PostgreSQL?

мне нужно НЕ поставить идентификатор, чтобы быть incrementd автоматически, но я не могу оставить его:

 NpgsqlCommand cmd = new NpgsqlCommand("insert into \"Min_Bar_Price_Data\" values(:SEC_ID, :PX_OPEN, :PX_HIGH, :PX_LOW, :PX_LAST, :PX_VOLUME, :Date)", conn); 
     //cmd.Parameters.Add(new NpgsqlParameter("ID", DbType.Int32)); 
     cmd.Parameters.Add(new NpgsqlParameter("SEC_ID", DbType.Int32)); 
     cmd.Parameters.Add(new NpgsqlParameter("PX_OPEN", DbType.Double)); 
     cmd.Parameters.Add(new NpgsqlParameter("PX_HIGH", DbType.Double)); 
     cmd.Parameters.Add(new NpgsqlParameter("PX_LOW", DbType.Double)); 
     cmd.Parameters.Add(new NpgsqlParameter("PX_LAST", DbType.Double)); 
     cmd.Parameters.Add(new NpgsqlParameter("PX_VOLUME", DbType.Double)); 
     cmd.Parameters.Add(new NpgsqlParameter("Date", DbType.DateTime)); 

Это таблица:

CREATE TABLE "Min_Bar_Price_Data" 
(
    "ID" integer NOT NULL DEFAULT nextval('"Price_Data_ID_seq"'::regclass), 
    "Sec_ID" integer NOT NULL, 
    "PX_OPEN" double precision, 
    "PX_HIGH" double precision, 
    "PX_LOW" double precision, 
    "PX_LAST" double precision, 
    "PX_VOLUME" double precision, 
    "Date" timestamp without time zone NOT NULL, 
    CONSTRAINT "Min_Bar_Price_Data_pkey" PRIMARY KEY ("Sec_ID", "Date") 
) 
WITH (
    OIDS=FALSE 
); 

Затем я заполняю в параметрах:

  //cmd.Parameters["ID"].Value = ID; 
      cmd.Parameters["SEC_ID"].Value = sec_ID; 
      cmd.Parameters["PX_OPEN"].Value = 0.0; 
      cmd.Parameters["PX_HIGH"].Value = 0.0; 
      cmd.Parameters["PX_LOW"].Value = 0.0; 
      cmd.Parameters["PX_LAST"].Value = d.Close; 
      cmd.Parameters["PX_VOLUME"].Value = 1.0; 
      cmd.Parameters["Date"].Value = d.DT; 

       cmd.ExecuteNonQuery(); 

{ "ERROR: 42804: колонки \" PX_VOLUME \»является двойной точности типа, но выражение времен типа набивать без часового пояса "}

ответ

0

Вы должны явно указать список столбцов:

NpgsqlCommand cmd = new NpgsqlCommand(
     "INSERT INTO \"Min_Bar_Price_Data\"" + 
     "(\"Sec_ID\", 
     \"PX_OPEN\", 
     \"PX_HIGH\", 
     \"PX_LOW\", 
     \"PX_LAST\", 
     \"PX_VOLUME\", 
     \"Date\")" + 
     "VALUES" + 
     "(:SEC_ID, 
     :PX_OPEN, 
     :PX_HIGH, 
     :PX_LOW, 
     :PX_LAST, 
     :PX_VOLUME, 
     :Date)", conn);