pg查询建表语句

本文档详细展示了PLCA数据库中的TB_bss_indicators_detail_202401表的SQL创建语句,包括字段定义、约束条件以及列注释,用于数据库设计和管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SELECT array_to_string(ARRAY(
  SELECT ret FROM (
    (
      -- 字段和约束信息
      SELECT 'CREATE TABLE plca.TB_bss_indicators_detail_202401 (' || array_to_string(ARRAY(
        SELECT SQL FROM (
          (
            -- 字段信息
            SELECT array_to_string(ARRAY(
              SELECT A.attname || ' ' || concat_ws('', T.typname, SUBSTRING(format_type(A.atttypid, A.atttypmod) FROM '\\(.*\\)')) || ' ' ||
              CASE A.attnotnull WHEN 't' THEN 'NOT NULL' ELSE '' END || ' ' ||
              CASE WHEN D.adbin IS NOT NULL THEN ' DEFAULT ' || pg_get_expr(D.adbin, A.attrelid) ELSE '' END
              FROM pg_attribute A
              LEFT JOIN pg_description b ON A.attrelid = b.objoid AND A.attnum = b.objsubid
              LEFT JOIN pg_attrdef D ON A.attrelid = D.adrelid AND A.attnum = D.adnum,
              pg_type T 
              WHERE A.attstattarget = -1 AND 
              A.attrelid = 'plca.TB_bss_indicators_detail_202401'::REGCLASS::OID AND 
              A.attnum > 0 AND 
              NOT A.attisdropped AND 
              A.atttypid = T.OID 
              ORDER BY A.attnum
            ), ',' || CHR(10)) AS SQL, 1 AS seri
          )
          UNION
          (
            -- 约束信息
            SELECT 'CONSTRAINT ' || conname || ' ' || pg_get_constraintdef(OID) AS SQL, 2 AS seri
            FROM pg_constraint T 
            WHERE conrelid = 'plca.TB_bss_indicators_detail_202401'::REGCLASS::OID 
            ORDER BY contype DESC
          )
        ) AS T
      ), ',' || CHR(10)) || ')' AS ret, 1 AS orderby
    )
    UNION
    (
      -- 索引信息
      SELECT array_to_string(ARRAY(
        SELECT pg_get_indexdef(indexrelid)
        FROM pg_index
        WHERE indrelid = 'plca.TB_bss_indicators_detail_202401'::REGCLASS::OID AND 
        indisprimary = 'f' AND 
        indisunique = 'f'
      ), ';' || CHR(10)) AS ret, 2 AS orderby
    )
    UNION
    (
      -- 注释信息
      SELECT array_to_string(ARRAY(
        SELECT 'COMMENT ON COLUMN plca.TB_bss_indicators_detail_202401.' || A.attname || ' IS ''' || b.description || ''''
        FROM pg_attribute A
        LEFT JOIN pg_description b ON A.attrelid = b.objoid AND A.attnum = b.objsubid
        WHERE A.attstattarget = -1 AND 
        A.attrelid = 'plca.TB_bss_indicators_detail_202401'::REGCLASS::OID AND 
        b.description IS NOT NULL
        ORDER BY A.attnum
      ), ';' || CHR(10)) AS ret, 3 AS orderby
    )
  ) AS results
), ';' || CHR(10) || CHR(13)) AS final_output;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值