积攒的草稿有点多啊。。。。
在navicat中MySQL 里面有auto_increment 自增字段
CREATE TABLE IF NOT EXISTS `htloginlog` (
"id" serial INT UNSIGNED AUTO_INCREMENT,
"uid" INT NOT NULL,
"returncode" INT NOT NULL,
"returnmsg" varchar,
"loginat" timestamp NOT NULL,
"usertype" INT ,
PRIMARY KEY (`id`),
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
PostgreSQL没有自动增加的单选框???
PostgreSQL没有自增字段, 有单独的对象:序列。
PostgreSQL 使用序列来标识字段的自增长
那如何设定主键自增 呢???
像上面我们把表创建完了,就差主键自增这个功能。这个时候,我们右键该表,选择 转储为SQL文件;复制文件内容,创建查询 按下面的要求进行更改后再运行。
"id" serial NOT NULL constraint htloginlog_pkey primary key,
id 原本是 int4,现在改成serial ,后面加上 constraint htloginlog_pkey,
htloginlog_pkey是名字每个表都不一样
运行完了后 刷新左侧表菜单,找到这张表,右键--设计表,下边默认的文本框出现
nextval('htloginlog_id_seq'::regclass)
DROP TABLE IF EXISTS "public"."htloginlog";
CREATE TABLE "public"."htloginlog" (
"id" serial NOT NULL constraint htloginlog_pkey primary key,
"uid" int4 NOT NULL,
"returncode" int4 NOT NULL,
"returnmsg" varchar(150) COLLATE "pg_catalog"."default",
"loginat" timestamp(6) NOT NULL,
"usertype" int4
)
;
COMMENT ON COLUMN "public"."htloginlog"."id" IS '主键,自增';
COMMENT ON COLUMN "public"."htloginlog"."uid" IS '操作员编号';
COMMENT ON COLUMN "public"."htloginlog"."returncode" IS '登陆返回码';
COMMENT ON COLUMN "public"."htloginlog"."returnmsg" IS '登陆返回信息';
COMMENT ON COLUMN "public"."htloginlog"."loginat" IS '登录时间';
COMMENT ON COLUMN "public"."htloginlog"."usertype" IS '用户类型';
COMMENT ON TABLE "public"."htloginlog" IS '登陆日志表 每个用户登录时都要记录';
主键自增极限,对于整型数据来说,它的取值范围:-2147483647~ 2147483647
主键类型设为int,其最大值为:2147483647 21个亿对普通表来说很大了,也够用
对于历史订单的数据,它要求的主键个数普遍以亿做单位。像网上购物后出现的订单号显然是用字符串(varchar)当做主键,生成规则类似UUID+内部规定的规则。
那么PostgreSQL取值极限分为三种 SMALLSERIAL、SERIAL 和 BIGSERIAL :
伪类型 | 存储大小 | 范围 |
---|---|---|
SMALLSERIAL | 2字节 | 1 到 32,767 |
SERIAL | 4字节 | 1 到 2,147,483,647 |
BIGSERIAL | 8字节 | 1 到 922,337,2036,854,775,807 |