加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

database – Postgres中定义主键的方式有何不同?

发布时间:2020-12-13 18:04:48 所属栏目:百科 来源:网络整理
导读:我想知道所有这些是否完全相同或是否存在一些差异. 方法1: CREATE TABLE testtable( id serial,title character varying,CONSTRAINT id PRIMARY KEY (id)); 方法:2 CREATE TABLE testtable( id serial PRIMARY KEY,); 方法3: CREATE TABLE testtable( id
我想知道所有这些是否完全相同或是否存在一些差异.

方法1:

CREATE TABLE testtable
(
   id serial,title character varying,CONSTRAINT id PRIMARY KEY (id)
);

方法:2

CREATE TABLE testtable
(
   id serial PRIMARY KEY,);

方法3:

CREATE TABLE testtable
(
   id integer PRIMARY KEY,);

CREATE SEQUENCE testtable_id_seq
    START WITH 1
    INCREMENT BY 1
    NO MAXVALUE
    NO MINVALUE
    CACHE 1;

ALTER SEQUENCE testtable_id_seq OWNED BY testtable.id;

更新:我在网上发现了一些内容,通过使用原始序列,您可以为主键预先分配内存,这有助于您计划在下一分钟进行数千次插入.

试试看吧;删除第二个和第三个“变化”之后的“,”,以便它们运行,执行每一个,然后执行:
d testtable

在每一个之后,你可以看到会发生什么.然后放下桌子,移到下一个桌子上.它看起来像这样:

Column |       Type        |                       Modifiers                        
--------+-------------------+--------------------------------------------------------
 id     | integer           | not null default nextval('testtable_id_seq'::regclass)
 title  | character varying | 
Indexes:
    "id" PRIMARY KEY,btree (id)

 Column |       Type        |                       Modifiers                        
--------+-------------------+--------------------------------------------------------
 id     | integer           | not null default nextval('testtable_id_seq'::regclass)
 title  | character varying | 
Indexes:
    "testtable_pkey" PRIMARY KEY,btree (id)

 Column |       Type        | Modifiers 
--------+-------------------+-----------
 id     | integer           | not null
 title  | character varying | 
Indexes:
    "testtable_pkey" PRIMARY KEY,btree (id)

第一个和第二个几乎相同,只是创建的主键名称不同.在第三个中,当您插入数据库时??,不再填充序列.您需要先创建序列,然后像这样创建表:

CREATE TABLE testtable
(
   id integer PRIMARY KEY DEFAULT nextval('testtable_id_seq'),title character varying
);

获得与第二个看起来相同的东西.唯一的好处是你可以使用CACHE指令预先分配一些序列号.这可能是一个足够大的资源消耗,你需要降低争用.但是,在可能发生这种情况之前,你需要每秒进行数千次插入,而不是每分钟进行数千次插入.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读