127 lines
3.4 KiB
PL/PgSQL
127 lines
3.4 KiB
PL/PgSQL
|
|
create table "public"."tabla_prueba" (
|
|
"id" bigint generated by default as identity not null,
|
|
"created_at" timestamp with time zone not null default now(),
|
|
"columna_prueba" text
|
|
);
|
|
|
|
|
|
alter table "public"."tabla_prueba" enable row level security;
|
|
|
|
CREATE UNIQUE INDEX tabla_prueba_pkey ON public.tabla_prueba USING btree (id);
|
|
|
|
alter table "public"."tabla_prueba" add constraint "tabla_prueba_pkey" PRIMARY KEY using index "tabla_prueba_pkey";
|
|
|
|
set check_function_bodies = off;
|
|
|
|
CREATE OR REPLACE FUNCTION public.set_actualizado_en()
|
|
RETURNS trigger
|
|
LANGUAGE plpgsql
|
|
AS $function$
|
|
begin
|
|
new.actualizado_en = now();
|
|
return new;
|
|
end;
|
|
$function$
|
|
;
|
|
|
|
CREATE OR REPLACE FUNCTION public.unaccent_immutable(text)
|
|
RETURNS text
|
|
LANGUAGE sql
|
|
IMMUTABLE PARALLEL SAFE STRICT
|
|
AS $function$
|
|
SELECT public.unaccent('public.unaccent', $1);
|
|
$function$
|
|
;
|
|
|
|
CREATE OR REPLACE FUNCTION public.validar_numero_ciclo_asignatura()
|
|
RETURNS trigger
|
|
LANGUAGE plpgsql
|
|
AS $function$
|
|
declare
|
|
v_numero_ciclos int;
|
|
begin
|
|
if new.numero_ciclo is null then
|
|
return new;
|
|
end if;
|
|
|
|
select pe.numero_ciclos into v_numero_ciclos
|
|
from planes_estudio pe
|
|
where pe.id = new.plan_estudio_id;
|
|
|
|
if v_numero_ciclos is null then
|
|
raise exception 'plan_estudio_id inválido %, plan no encontrado', new.plan_estudio_id;
|
|
end if;
|
|
|
|
if new.numero_ciclo < 1 then
|
|
raise exception 'numero_ciclo debe ser >= 1 (recibido %)', new.numero_ciclo;
|
|
end if;
|
|
|
|
if new.numero_ciclo > v_numero_ciclos then
|
|
raise exception 'numero_ciclo % excede planes_estudio.numero_ciclos % para plan_estudio_id %',
|
|
new.numero_ciclo, v_numero_ciclos, new.plan_estudio_id;
|
|
end if;
|
|
|
|
return new;
|
|
end;
|
|
$function$
|
|
;
|
|
|
|
grant delete on table "public"."tabla_prueba" to "anon";
|
|
|
|
grant insert on table "public"."tabla_prueba" to "anon";
|
|
|
|
grant references on table "public"."tabla_prueba" to "anon";
|
|
|
|
grant select on table "public"."tabla_prueba" to "anon";
|
|
|
|
grant trigger on table "public"."tabla_prueba" to "anon";
|
|
|
|
grant truncate on table "public"."tabla_prueba" to "anon";
|
|
|
|
grant update on table "public"."tabla_prueba" to "anon";
|
|
|
|
grant delete on table "public"."tabla_prueba" to "authenticated";
|
|
|
|
grant insert on table "public"."tabla_prueba" to "authenticated";
|
|
|
|
grant references on table "public"."tabla_prueba" to "authenticated";
|
|
|
|
grant select on table "public"."tabla_prueba" to "authenticated";
|
|
|
|
grant trigger on table "public"."tabla_prueba" to "authenticated";
|
|
|
|
grant truncate on table "public"."tabla_prueba" to "authenticated";
|
|
|
|
grant update on table "public"."tabla_prueba" to "authenticated";
|
|
|
|
grant delete on table "public"."tabla_prueba" to "postgres";
|
|
|
|
grant insert on table "public"."tabla_prueba" to "postgres";
|
|
|
|
grant references on table "public"."tabla_prueba" to "postgres";
|
|
|
|
grant select on table "public"."tabla_prueba" to "postgres";
|
|
|
|
grant trigger on table "public"."tabla_prueba" to "postgres";
|
|
|
|
grant truncate on table "public"."tabla_prueba" to "postgres";
|
|
|
|
grant update on table "public"."tabla_prueba" to "postgres";
|
|
|
|
grant delete on table "public"."tabla_prueba" to "service_role";
|
|
|
|
grant insert on table "public"."tabla_prueba" to "service_role";
|
|
|
|
grant references on table "public"."tabla_prueba" to "service_role";
|
|
|
|
grant select on table "public"."tabla_prueba" to "service_role";
|
|
|
|
grant trigger on table "public"."tabla_prueba" to "service_role";
|
|
|
|
grant truncate on table "public"."tabla_prueba" to "service_role";
|
|
|
|
grant update on table "public"."tabla_prueba" to "service_role";
|
|
|
|
|