sql >> データベース >  >> RDS >> PostgreSQL

postgres:現在の最大値を含むすべての整数列を検索します

    CREATE OR REPLACE FUNCTION intpkmax() RETURNS
       TABLE(schema_name name, table_name name, column_name name, max_value integer)
       LANGUAGE plpgsql STABLE AS
    $$BEGIN
       /* loop through tables with a simgle integer column as primary key */
       FOR schema_name, table_name, column_name IN
          SELECT sch.nspname, tab.relname, col.attname
             FROM pg_class tab
                JOIN pg_constraint con ON con.conrelid = tab.oid
                JOIN pg_attribute col ON col.attrelid = tab.oid
                JOIN pg_namespace sch ON sch.oid = tab.relnamespace
             WHERE con.contype = 'p'
                AND array_length(con.conkey, 1) = 1
                AND col.atttypid = 'integer'::regtype
                AND NOT col.attisdropped
       LOOP
          /* get the maximum value of the primary key column */
          EXECUTE 'SELECT max(' || quote_ident(column_name) ||
                  ') FROM ' || quote_ident(schema_name) ||
                  '.' || quote_ident(table_name) || ''
             INTO max_value;
          /* return the next result */
          RETURN NEXT;
       END LOOP;
    END;$$;
    

    次に、

    でリストを取得できます
    SELECT * FROM intpkmax();
    



    1. 文字列/列の値をmysqlの日付間隔定数(DAY、MONTH ...)として使用するにはどうすればよいですか?

    2. Alembicを使用したスト​​アドプロシージャ:MySQL構文エラー

    3. OraclePLSQLは1つの行タイプを返します

    4. LIKE演算子を使用したSelectステートメントのMySQLケース