zoukankan      html  css  js  c++  java
  • postgres的序列问题。

    之前新建了张表,如下:

     1 CREATE TABLE hl_14.cells
     2 (
     3   cid integer NOT NULL DEFAULT nextval('cells_cid_seq'::regclass),
     4   datetime timestamp without time zone NOT NULL,
     5   cellname character varying(50) NOT NULL, -- 小区名
     6   nettype character varying(50) NOT NULL, -- 网络类型GSM900,GSM1800,TD
     8   cgi integer NOT NULL, -- 生成函数getcgi
     9   rnc character varying(50) NOT NULL,
    10   lac integer NOT NULL,
    11   ci integer NOT NULL,
    12   lon numeric(8,5) NOT NULL,
    13   lat numeric(8,5) NOT NULL,
    24   CONSTRAINT cells_pkey PRIMARY KEY (cid),
    25   CONSTRAINT cells_key UNIQUE (datetime, cgi)
    26 )
    27 WITH (
    28   OIDS=FALSE
    29 );
    30 ALTER TABLE hl_14.cells

    因为数据要不能从前台直接文件导入,需要做处理,所以每次都是给好了cid然后导入进去的。这样查询没啥问题,但是页面插入的时候出错了。

    插入的sql为 insert into cells(

    datetime,cellname,...) values (,,,)。插入语句都是不给cid的,这样就导致,插入的时候报错,提示该cid已经存在,查看了下cid序列当前的信息如下:
    CREATE SEQUENCE cells_cid_seq
      INCREMENT 1
      MINVALUE 1
      MAXVALUE 9223372036854775807
      START 21715
      CACHE 1;
    ALTER TABLE cells_cid_seq
      OWNER TO mrapp;

    也就是后台手动导入的数据(给了cid的),不会同步更新序列的start值。

    表的设计本身有问题,cid作为主键本身没有意义。所以改了表设计:

     1 CREATE TABLE cells
     2 (
     3   cid serial NOT NULL,
     4   datetime timestamp without time zone NOT NULL,
     5   cellname character varying(50) NOT NULL, -- 小区名
     6   nettype character varying(50) NOT NULL, -- 网络类型GSM900,GSM1800,TD
     8   cgi integer NOT NULL, -- 生成函数getcgi
     9   rnc character varying(50) NOT NULL,
    10   lac integer NOT NULL,
    11   ci integer NOT NULL,
    12   lon numeric(8,5) NOT NULL,
    13   lat numeric(8,5) NOT NULL,25   CONSTRAINT cells_key UNIQUE (datetime, cgi)
    26 )
    27 WITH (
    28   OIDS=FALSE
    29 );
    30 ALTER TABLE cells

    这个问题算是解决了吧。导入的时候不用给cid,由数据库分配。

  • 相关阅读:
    GridView加ObjectDataSource做删除事件(ObjectDataSourceStatusEventHandler 委托)
    非常酷的三级下拉菜单!!(javascript)
    sql事务处理(转)
    首页头部下拉广告设计(javascript)
    JavaScript 强行弹出窗口 与 无提示关闭页面
    androd之绘制文本(FontMetrics)[转]
    Android 字 成 圆
    python写的二分插入算法
    Loading效果 UIActivityIndicatorView
    ios6.0 调用系统api 分享到 twitter facebook weibo
  • 原文地址:https://www.cnblogs.com/wangfantasy/p/3937653.html
Copyright © 2011-2022 走看看