postgre 没有主键自增ma_PostgreSQL 主键自增解决方案
因?yàn)楣ぷ餍枰?#xff0c;接觸到了PostgreSQL,遇到了主鍵自增的情況
8.1.4. Serial Types
數(shù)據(jù)類型serial和bigserial不是真正的類型,而只是用于設(shè)置唯一標(biāo)識(shí)符列的符號(hào)方便(類似于 某些其他數(shù)據(jù)庫(kù)支持的AUTO_INCREMENT屬性)。在當(dāng)前實(shí)現(xiàn)中,指定:CREATE TABLE tablename(
colname SERIAL
);
相當(dāng)于指定: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、新創(chuàng)建表的時(shí)候可以指定為 serial 類型,自動(dòng)將創(chuàng)建序列
2、修改已經(jīng)存在的表,則可以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');
# 開(kāi)始值為1,增量為1,沒(méi)有最小值,沒(méi)有最大值
另外用到的幾個(gè)和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'
總結(jié)
以上是生活随笔為你收集整理的postgre 没有主键自增ma_PostgreSQL 主键自增解决方案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mysql开发java心得_关于mysq
- 下一篇: python核心数据类型_Python核