El 27/01/2010 17:25, Arcel Labrada Batista escribió:
buenos dias,
tengo un pequeño problema pero no se como resolverlo.
la situación es que para una sistema de replicas, necesito crear
particiones de las tablas que voy a replicar, pero necesito que esas
particiones se creen dinámicas
por ejemplo,
necesito que la partición tenga el nombre concatenado con el
identificador de la tupla que inserto, para ello creo la función que a
continuación les muestro,
CREATE OR REPLACE FUNCTION "public"."f_crear_tablas_replicas" ()
RETURNS trigger AS
$body$
declare
begin
create table public.tb_estudiante_"||NEW.id||() INHERITS (tb_estudiante);
return new;
end;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
y el problema esta en la concatenación, me da un error que dice:
ERROR: error de sintaxis en o cerca de «||» at character 30
QUERY: create table "tb_estudiante_"|| $1 ||() INHERITS (tb_estudiante)
CONTEXT: SQL statement in PL/PgSQL function "f_crear_tablas_replicas"
near line 7
me pueden ayudar en esto???
Eso creo que todavía no se puede hacer con PostgreSQL, y no todos los
SGBD propietarios tampoco lo hacen, Creo que DB2 y Oracle son los
únicos, y no es tarea fácil.
Saludos
--
--------------------------------------------------------------------------------
"Para ser realmente grande, hay que estar con la gente, no por encima de ella."
Montesquieu
Ing. Marcos Luís Ortíz Valmaseda
PostgreSQL System DBA&& DWH -- BI Apprentice
Centro de Tecnologías de Almacenamiento y Análisis de Datos (CENTALAD)
Universidad de las Ciencias Informáticas
Linux User # 418229
-- PostgreSQL --
"TIP 4: No hagas 'kill -9' a postmaster"
http://www.postgresql-es.org
http://www.postgresql.org
http://www.planetpostgresql.org
-- DWH + BI --
The Data WareHousing Institute
http://www.tdwi.org
http://www.tdwi.org/cbip
---------------------------------------------------------------------------------