Sql espace其中OID=pg_my_temp_schema())您的测试有几个弱点。正确的测试应该是table\u schema,比如'pg\\u temp\\u%'或者更严格的测试:table\u schema~'^pg\u temp\ud+$'@Pet
Sql espace其中OID=pg_my_temp_schema())您的测试有几个弱点。正确的测试应该是table\u schema,比如'pg\\u temp\\u%'或者更严格的测试:table\u schema~'^pg\u temp\ud+$'@Pet,sql,database,postgresql,information-schema,search-path,Sql,Database,Postgresql,Information Schema,Search Path,espace其中OID=pg_my_temp_schema())您的测试有几个弱点。正确的测试应该是table\u schema,比如'pg\\u temp\\u%'或者更严格的测试:table\u schema~'^pg\u temp\ud+$'@PeterKrauss如果您试图在9.4以上版本的postgres上使用to\u regclass函数,您将得到该错误。必须有9.4+如果存在。。。如果不存在。。没有[] public company1 company2 company3 ... c
espace其中OID=pg_my_temp_schema())您的测试有几个弱点。正确的测试应该是
table\u schema,比如'pg\\u temp\\u%'
或者更严格的测试:table\u schema~'^pg\u temp\ud+$'
@PeterKrauss如果您试图在9.4以上版本的postgres上使用to\u regclass函数,您将得到该错误。必须有9.4+如果存在。。。如果不存在。。没有[]
public
company1
company2
company3
...
companynn
search_path='company3,public'
select isSpecific('company3','tablenotincompany3schema')
select isSpecific('company3','tableincompany3schema')
SELECT EXISTS(
SELECT *
FROM information_schema.tables
WHERE
table_schema = 'company3' AND
table_name = 'tableincompany3schema'
);
SELECT 'schema_name.table_name'::regclass
SELECT to_regclass('schema_name.table_name');
/**
* From my old SwissKnife Lib to your SwissKnife. License CC0.
* Check and normalize to array the free-parameter relation-name.
* Options: (name); (name,schema), ("schema.name"). Ignores schema2 in ("schema.name",schema2).
*/
CREATE FUNCTION relname_to_array(text,text default NULL) RETURNS text[] AS $f$
SELECT array[n.nspname::text, c.relname::text]
FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace,
regexp_split_to_array($1,'\.') t(x) -- not work with quoted names
WHERE CASE
WHEN COALESCE(x[2],'')>'' THEN n.nspname = x[1] AND c.relname = x[2]
WHEN $2 IS NULL THEN n.nspname = 'public' AND c.relname = $1
ELSE n.nspname = $2 AND c.relname = $1
END
$f$ language SQL IMMUTABLE;
CREATE FUNCTION relname_exists(text,text default NULL) RETURNS boolean AS $wrap$
SELECT EXISTS (SELECT relname_to_array($1,$2))
$wrap$ language SQL IMMUTABLE;
CREATE FUNCTION relname_normalized(text,text default NULL,boolean DEFAULT true) RETURNS text AS $wrap$
SELECT COALESCE(array_to_string(relname_to_array($1,$2), '.'), CASE WHEN $3 THEN '' ELSE NULL END)
$wrap$ language SQL IMMUTABLE;