Objetivo:
Que el estudiante adquiera y aprenda las técnicas y lenguajes requeridos para extender y programar funciones avanzadas de un servidor de base de datos PostgreSQL.
Temas:
Extendiendo el SQL
- Cómo funciona la extensibilidad
- El sistema de tipos de PoatgreSQL
- Tipos base
- Tipos compuestos
- Dominios
- Seudotipos
- Tipos polimórficos
- Funciones definidas por el usuario
- Funciones SQL
- Funciones SQL en tipos base
- Funciones SQL en tipos compuestos
- Funciones con parámetros de salida
- Funciones SQL como fuentes de tablas
- Funciones SQL que regresan registros
- Funciones SQL polimórficas
- Sobrecarga de funciones
- Categorías de volatibilidad de funciones
- Funciones de lenguajes procedurales
- Funciones internas
- Funciones de lenguaje C
- Agregados definidos por el usuario
- Tipos definidos por el usuario
- Operadores definidos por el usuario
- Optimización de operadores
- CONMUTATOR
- NEGATOR
- RESTRICT
- JOIN
- HASHES
- MERGES
- Interfaces de extensiones con índices
Disparadores
- Panorama del comportamiento de los disparadores
- Visibilidad de los cambios en los datos
- Escribiendo funciones disparadores en C
- Un ejemplo completo
El sistema de reglas
- El árbol de consultas
- Vistas y el sistema de reglas
- Cómo funcionan las reglas de SELECT
- Las reglas de vistas en sentencias sin SELECT
- El poder las vistas en PostgreSQL
- Actualizando una vista
- Reglas en INSERT, UPATE y DELETE
- Cómo funciona las reglas de actualización
- Cooperación con las vistas
- Reglas y privilegios
- Reglas y estatus de comandos
- Reglas versus triggers
- Instalando los lenguajes procedimientos
El lenguaje de procedimientos PL/pgSQL
- Panorama
- Ventajas de usar PL/pgSQL
- Tipos de datos soportados como argumentos y resultados
- Consejos para desarrollo con PL/pgSQL
- Estructura de PL/pgSQL
- Declaraciones
- Alias para parámetros de funciones
- Copiando tipos
- Tipos de registro de tabla
- Tipos de registro genéricos
- RENAME
- CExpresiones
- CSentencias básicas
- Asignación
- Ejecutando una consulta sin resultado
- Ejecutando una consulta con resultado de un registro
- Usando NULL
- Ejecutando comandos dinámicos
- Obteniendo el estatus resultante
- Estructuras de control
- Regresando de una función
- Condicionales
- Ciclos simples
- Procesando los resultados de una consulta
- Capturando errores
- Manejo de cursores
- Declarando variables de cursores
- Abriendo cursores
- Usando cursores
- Errores y mensajes
- Procedimientos disparadores