postgre 没有主键自增ma_PostgreSQL 主键自增解决方案
因為工作需要,接觸到了PostgreSQL,遇到了主鍵自增的情況
8.1.4. Serial Types
數據類型serial和bigserial不是真正的類型,而只是用于設置唯一標識符列的符號方便(類似于 某些其他數據庫支持的AUTO_INCREMENT屬性)。在當前實現中,指定:CREATE TABLE tablename(
colname SERIAL
);
相當于指定:CREATE SEQUENCE tablename_colname_seq;
CREATE TABLE tablename (
colname integer NOT NULL DEFAULT nextval('tablename_colname_seq')
);
ALTER SEQUENCE tablename_colname_seq OWNED BY tablename.colname;
1、新創建表的時候可以指定為 serial 類型,自動將創建序列
2、修改已經存在的表,則可以CREATE SEQUENCE table_serial_name
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
alter table 'you_table_name' alter column 'you_column' set default nextval('table_serial_name');
# 開始值為1,增量為1,沒有最小值,沒有最大值
另外用到的幾個和MySQL不同的地方
1、查詢所有序列select relname from pg_class where relowner=(select usesysid from pg_user where usename='postgres') and relkind='S'; #此處的 postgres 是用戶名
2、查詢主鍵SELECT pg_constraint.conname, pg_attribute.attname
FROM pg_constraint
INNER JOIN pg_class ON pg_constraint.conrelid = pg_class.oid
INNER JOIN pg_attribute ON pg_attribute.attrelid = pg_class.oid AND pg_attribute.attnum = pg_constraint.conkey [ 1 ]
WHERE pg_class.relname = 'you_table_name' AND pg_constraint.contype = 'p'
總結
以上是生活随笔為你收集整理的postgre 没有主键自增ma_PostgreSQL 主键自增解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql开发java心得_关于mysq
- 下一篇: linux cmake编译源码,linu