数据库中分表时,往往需要向多个分表中添加同一个字段,可以定义一个函数,每次调用这个函数向多个份表中添加同意字段。
1、创建函数示例:
在PostgreSQL中创建一个简单的函数
以下是一个在PostgreSQL中创建函数的简单示例,该函数接受两个整数作为输入并返回它们的和:
CREATE OR REPLACE FUNCTION add_numbers(a integer, b integer)
RETURNS integer AS
$$
BEGIN
RETURN a + b;
END;
$$
LANGUAGE plpgsql;
在navicat中执行后,在函数中可以看到
使用函数
SELECT add_numbers(3, 4);
2、使用函数给多个分表添加同一字段
定义函数,向表名称中包含特定字段的表中添加字段的函数,
CREATE OR REPLACE FUNCTION alter_field_fb(tablename varchar, fieldname varchar, new_datatype varchar, fieldcomment varchar)
RETURNS text AS
$$
DECLARE
_record text;
BEGIN
FOR _record IN SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' AND table_name LIKE '%' || tablename || '%' LOOP
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = _record AND column_name = fieldname) THEN
EXECUTE 'ALTER TABLE public."' || _record || '" DROP COLUMN "' || fieldname || '"';
END IF;
EXECUTE 'ALTER TABLE public."' || _record || '" ADD COLUMN "' || fieldname || '" ' || new_datatype;
IF fieldcomment IS NOT NULL AND fieldcomment <> '' THEN
EXECUTE 'COMMENT ON COLUMN public."' || _record || '"."' || fieldname || '" IS ' || quote_literal(fieldcomment);
END IF;
EXCEPTION
WHEN OTHERS THEN
RETURN 'Failed to alter table ' || _record || ': ' || SQLERRM;
END;
END LOOP;
RETURN 'SUCCESS';
END;
$$
LANGUAGE plpgsql VOLATILE;
使用函数
SELECT "public".alter_field_fb('procedure', 'remark', 'varchar(255)','备注');