Phi*_*bbs 6 postgresql sequence greenplum
据我所知,此查询应显示串行列的新值的表达式:
select d.adsrc
from (
SELECT a.attrelid, a.attnum, n.nspname, c.relname, a.attname
FROM pg_catalog.pg_attribute a, pg_namespace n, pg_class c
WHERE a.attnum > 0
AND NOT a.attisdropped
AND a.attrelid = c.oid
and c.relkind not in ('S','v')
and c.relnamespace = n.oid
and n.nspname not in ('pg_catalog','pg_toast','information_schema')
) x
left join pg_attrdef d on d.adrelid = x.attrelid and d.adnum = x.attnum
where x.relname = 'table_name' and x.nspname = 'schema_name' and x.attname = 'column_name'
;
Run Code Online (Sandbox Code Playgroud)
它大部分时间都有效,但如果我重命名序列,新名称不会反映在查询结果中 - 它继续显示序列的原始名称。任何想法为什么?
在评论中,a_horse_with_no_name说:
您使用的是 Greenplum 还是 Postgres?在 Postgres 中,您可以使用
pg_get_serial_sequence
pg_get_serial_sequence
返回与列关联的序列的名称,如果没有与列关联的序列,则返回 NULL。第一个输入参数是一个带有可选模式的表名,第二个参数是一个列名。因为第一个参数可能是模式和表,所以它不被视为双引号标识符,这意味着默认情况下它是小写的,而第二个参数,只是一个列名,被视为双引号并具有案例保存。该函数返回一个适合传递给序列函数的格式的值(参见第 9.16 节)。可以使用 修改或删除此关联ALTER SEQUENCE OWNED BY
。(该函数可能应该被调用pg_get_owned_sequence
;它的当前名称反映了它通常与serial
或bigserial
列一起使用的事实。)
归档时间: |
|
查看次数: |
10661 次 |
最近记录: |