Ejemplos de bases de datos cruzadas en varios sistemas de esquema

Si el sistema está configurado para admitir varios esquemas dentro de una base de datos, el sistema sigue respetando las normas y restricciones de acceso entre bases de datos. Dentro de una base de datos que contiene varios esquemas, hay algunas directrices importantes para los nombres de objeto y también operaciones de esquemas cruzados.

Por ejemplo, supongamos que el sistema Netezza Performance Server tiene dos bases de datos, DEV y PROD. La base de datos DEV tiene esquemas denominados SCH1 (el esquema predeterminado) y SCH2. En el esquema SCH1, hay una tabla llamada TEST1. En SCH2, hay una tabla llamada TEST2. La base de datos PROD tiene un esquema llamado ENG (el esquema predeterminado) y SALES. El esquema SALES tiene una tabla llamada NE_SALES.

Mientras está conectado a la base de datos DEV.SCH1, puede hacer referencia a objetos en SCH1 utilizando únicamente el nombre de objeto. Por ejemplo, para recuperar todas las filas de TEST1, puede utilizar el siguiente comando:

DEV.SCH1(ADMIN)=> SELECT * FROM test1;

Desde DEV.SCH1, no puede acceder a objetos en SCH2 utilizando únicamente el nombre de objeto. Por ejemplo:

DEV.SCH1(ADMIN)=> SELECT * FROM test2;
ERROR: relation does not exist DEV.SCH1.TEST2

Debe utilizar el formato schema.object o un nombre completo para seleccionar desde una tabla que está en un esquema diferente en la misma base de datos, por ejemplo:

DEV.SCH1(ADMIN)=> SELECT * FROM sch2.test2;

Mientras está conectado en la base de datos DEV, puede acceder a objetos de la base de datos PROD utilizando un nombre de objeto completo, por ejemplo:

DEV.SCH2(ADMIN)=> SELECT * FROM prod.sales.ne_sales;

Desde la base de datos DEV, si desea acceder a la tabla en el esquema ENG de la base de datos PROD, puede especificar ENG en el nombre de objeto o utilizar “..” porque ENG es el esquema predeterminado para la base de datos, por ejemplo:

DEV.SCH2(ADMIN)=> SELECT * FROM prod.eng.tbl1;

Netezza Performance Server admite acciones de escritura entre esquemas para esquemas que residen en la misma base de datos y en otras bases de datos. A continuación, tiene varios ejemplos:

DEV.SCH1(ADMIN)=> CREATE SEQUENCE sch2.seq1;
DEV.SCH1(ADMIN)=> CREATE TABLE sales_old AS SELECT * FROM sch2.sales;
DEV.SCH1(ADMIN)=> TRUNCATE TABLE sch2.sales;
DEV.SCH1(ADMIN)=> INSERT INTO sch2.sales SELECT * FROM sales_old;