sql – 使用表,字段和模式名称查找引用的表名
发布时间:2021-01-11 22:20:55 所属栏目:MsSql教程 来源:网络整理
导读:我有一个要求,我需要通过表中的特定字段(外键表)使用此字段名称,表名(此字段所在的位置)和模式名称(其中)查找引用的表名(主键表名)桌子,因此场地居住) 例如: Schema1.TableA Id (Integer,PK) Name varcharSchema2.TableB Id (integer,PK) A_Id (integer,FK r
我有一个要求,我需要通过表中的特定字段(外键表)使用此字段名称,表名(此字段所在的位置)和模式名称(其中)查找引用的表名(主键表名)桌子,因此场地居住) 例如: Schema1.TableA Id (Integer,PK) Name varchar Schema2.TableB Id (integer,PK) A_Id (integer,FK referencing TableA.Id) Name varchar 我需要将A_Id,TableB和Schema2传递给函数并获取Schema1.TableA作为结果. 我正在使用Postgres 8.3. 解决方法如果您不需要将其移植到另一个RDBMS,那么在pg_catalog中使用目录表而不是标准信息模式会更快更简单:SELECT c.confrelid::regclass::text AS referenced_table,c.conname AS fk_name,pg_get_constraintdef(c.oid) AS fk_definition FROM pg_attribute a JOIN pg_constraint c ON (c.conrelid,c.conkey[1]) = (a.attrelid,a.attnum) WHERE a.attrelid = '"Schema2"."TableB"'::regclass -- table name AND a.attname = 'A_Id' -- column name AND c.contype = 'f' ORDER BY conrelid::regclass::text,contype DESC; 返回: referenced_table | fk_name | fk_definition ------------------+-------------------------+---------------------------------------------- Schema1.TableA | b1_fkey | FOREIGN KEY ("B_id") REFERENCES "Schema1"."TableA"("A_id") 笔记 >另外两列仅用于定向.根据你的Q,你只需要第一列. 查看手册中的 有关: > PostgreSQL drop constraint with unknown name (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |