用SQL语句获得PostgreSQL表的主键

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用SQL语句获得PostgreSQL表的主键相关的知识,希望对你有一定的参考价值。

拜托各位给我写一个 sql语句 用来显示PostgreSQL 表的表结构 包括
字段名称、字段类型、是否为主键 这些信息。小弟在这先说声谢谢了!!
"select pg_constraint.conname as pk_name from pg_constraint inner join pg_class
on pg_constraint.conrelid = pg_class.oid where pg_class.relname = 'masuser'and pg_constraint.contype='p'

这个可以显示yourtablename表的主键 "
这个答案我运行了 只显示 “masuser_pkey”没有显示出逐渐的字段名啊!请给一个具体点的答案。谢谢

select pg_constraint.conname as pk_name from pg_constraint inner join pg_class
on pg_constraint.conrelid = pg_class.oid where pg_class.relname = 'yourtablename' and pg_constraint.contype='p'

这个可以显示yourtablename表的主键

select pg_constraint.conname as pk_name,pg_attribute.attname as colname,pg_type.typname as typename 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]
inner join pg_type on pg_type.oid = pg_attribute.atttypid
where pg_class.relname = 'yourtablename'
and pg_constraint.contype='p'

这个可以显示出主键名,和主键关联的字段名,和字段名类型
参考技术A 你会用PLSQL Developer吗 你说的这些要求 这个工具能完成 直接右键点你的表 选择viwe 就可以清楚的看到你所需要的东西了 如果没有PLSQL Developer就按这个名字去网上下一个很小 安装很简单 参考技术B 可以通过系统表来获取这些信息
什么数据库呢

sql server的主键与外键问题

我今天刚学sql server的主键外键,觉得有点不懂的是:书上说他们是强制约束,不能乱改.可如果我要改主键的某列值应该怎么办呢?请大家给我讲讲他们之间的关系到底是怎么样的?主表和子表的关系我也搞不太懂,谢谢大家了~

参考技术A 可以改,只要不是重复值就行。
主键是一个表实体完整性的保证,就是说用它来保证能够唯一的表示一个实体。所以主键值不能重复。
外键是相对于两个表的。在另一个表中也是主键。用于保证参照完整性——控制两个表中的同一项数据一致。
参考技术B 对于我这个sql高手(呵呵)来说主外健好麻烦,先要把外健表中的关于有主健信息一改,再去改主健列内容,就这样 参考技术C 这么和你说吧,主键具有唯一性,也就是不能重复
外键是和其他表联系的,也就是和其他表的主键相关联,通信.
都可以改
改主键时,要注意唯一,不能出现重复值
改外键值时,将会使这条修改了外键值的记录和其他表失去关联.本回答被提问者采纳
参考技术D 诲人不倦:
有表:学生(学号,系代码), 系(系代码,系名,……)
学生表中,学号是主键,系代码是一个属性,但不是主键,而是系表中的主键;那么系代码在学生表中就是外键;
在学生表中插入/修改数据时,系代码的值必须是系表中已存在的值。这就是约束。
第5个回答  2009-04-15 先删除子表数据,再修改主表数据

以上是关于用SQL语句获得PostgreSQL表的主键的主要内容,如果未能解决你的问题,请参考以下文章

POSTGRESQL外键引用两个不同表的主键

sql中啥叫主键表,啥叫外键表

sql server的主键与外键问题

如何获取mysql数据库中某个表的主键或唯一字段

sql 添加外键语句

怎么用SQL语句CREATE TABLE的主键为“自动增加”