最近看前辈们的代码,发现了一个没有接触过的类型:serial。
下面是关于serial的官方介绍:
SERIAL is an alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.
SERIAL DEFAULT VALUE in the definition of an integer column is an alias for NOT NULL AUTO_INCREMENT UNIQUE.
下面以我初过四级的水平解释一下:
SERIAL 是一个拥有非空、自增、唯一性等约束的长整型无符号数的别名。
整型数列SERIAL 的默认值是非空、自增、唯一等约束的别名
也就是类型为serial的值即拥有非空、自增、唯一性等约束!
当然,也有别的自增方法,例如使用关键字auto_increment
:
create table t_user(
id int(10) primary key auto_increment,
name varchar(32) not null
);
在使用自增类型之后,测试时往往会遇到一些问题。编写测试类插入数据时,数据就会自增,等到项目上线时,数据库的自增已经进行了一部分了。
即使你将所有数据全部删除。下次插入仍然会接着之前的数据累加,如下图:
如上图,即使我提前设置sum为0,再插入数据也不是以0为起点。
– 清除所有的记录,并且索引号从0开始
TRUNCATE TABLE questions RESTART IDENTITY CASCADE;
执行上面的语句,再进行插入,自增序列即从0开始。