Postgres:强制在模式中有一列
Postgres: Force to have a column in schema
是否可以拦截 CREATE table
语句并确保给定列 column1
存在或 return 异常?
有没有人有例子?
CREATE TABLE
事件触发器在 table 创建后触发。您可以获取创建的 table 的 OID,并在系统目录 pg_attribute
中搜索其列。示例:
create or replace function create_table_event()
returns event_trigger language plpgsql as $$
declare
r record;
begin
for r in
select *
from pg_event_trigger_ddl_commands()
where command_tag = 'CREATE TABLE'
loop
if not exists(
select from pg_attribute
where attrelid = r.objid
and attname = 'column1')
then
raise exception 'cannot create table %; table must have "column1" column', r.object_identity;
end if;
end loop;
end
$$;
create event trigger create_table_event
on ddl_command_end when tag in ('CREATE TABLE')
execute procedure create_table_event();
在文档中阅读更多内容:
是否可以拦截 CREATE table
语句并确保给定列 column1
存在或 return 异常?
有没有人有例子?
CREATE TABLE
事件触发器在 table 创建后触发。您可以获取创建的 table 的 OID,并在系统目录 pg_attribute
中搜索其列。示例:
create or replace function create_table_event()
returns event_trigger language plpgsql as $$
declare
r record;
begin
for r in
select *
from pg_event_trigger_ddl_commands()
where command_tag = 'CREATE TABLE'
loop
if not exists(
select from pg_attribute
where attrelid = r.objid
and attname = 'column1')
then
raise exception 'cannot create table %; table must have "column1" column', r.object_identity;
end if;
end loop;
end
$$;
create event trigger create_table_event
on ddl_command_end when tag in ('CREATE TABLE')
execute procedure create_table_event();
在文档中阅读更多内容: