create table test (
id integer primary key,
data integer check (data between 1 and 100)
);
create table test2 (
id integer primary key,
data integer,
test_id integer references test (id)
);
查询 #1
select
connamespace::regnamespace "Schema",
conrelid::regclass "Table",
conname "Constraint",
pg_get_constraintdef(oid) "Definition",
format ('ALTER TABLE %I.%I ADD CONSTRAINT %I %s;',
connamespace::regnamespace,
conrelid::regclass,
conname,
pg_get_constraintdef(oid)
)
from pg_constraint
where
conname IN (
'test_data_check', 'test_pkey',
'test2_pkey', 'test2_test_id_fkey'
);
架构
桌子
约束
定义
格式
上市
测试
test_data_check
检查 (((数据 >= 1) AND (数据 <= 100)))
ALTER TABLE public.test ADD CONSTRAINT test_data_check CHECK (((data >= 1) AND (data <= 100)));
上市
测试
test_pkey
主键(id)
ALTER TABLE public.test ADD CONSTRAINT test_pkey PRIMARY KEY (id);
上市
测试2
test2_pkey
主键(id)
ALTER TABLE public.test2 添加约束 test2_pkey PRIMARY KEY (id);
上市
测试2
test2_test_id_fkey
外键 (test_id) 参考 test(id)
ALTER TABLE public.test2 添加约束 test2_test_id_fkey FOREIGN KEY (test_id) REFERENCES test(id);
Postgresql 具有pg_get_constraintdef函数,用于生成特定约束的创建语句。
这是一个例子;
架构 (PostgreSQL v13)
查询 #1
在 DB Fiddle 上查看