如何在PostgreSQL表中插入具有序列号的记录?

如何在PostgreSQL表中插入具有序列号的记录?,postgresql,npgsql,Postgresql,Npgsql,我想向具有序列ID的表中添加行 我不需要为in提供自动递增的ID,但我似乎不能忽略它: 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 NpgsqlPar

我想向具有序列ID的表中添加行

我不需要为in提供自动递增的ID,但我似乎不能忽略它:

       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();

{错误:42804:column\PX_VOLUME\的类型为双精度,但表达式的类型为timestamp而不带时区}

您应该明确指定列列表:

 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);