Tipos soportados
Los seis motores de base de datos que una app puede conectar, los campos de cada uno, lo que cada motor sabe hacer, y las herramientas para crear y cambiar tablas sin salir de la plataforma.
Al crear un datasource, el campo Tipo decide todo lo demás: los campos de conexión que el formulario muestra, los marcadores de parámetros que el SQL usa, y lo que la plataforma te deja crear en esa base (vistas, procedimientos, triggers). Esta página recorre los seis tipos, uno a uno.

Vista rápida
| Tipo | Conecta a | Puerto por defecto | Particularidades |
|---|---|---|---|
| PostgreSQL | Servidor PostgreSQL | 5432 | Interruptor Usar SSL |
| MySQL | Servidor MySQL | 3306 | Interruptor Usar SSL |
| MariaDB | Servidor MariaDB | 3306 | Interruptor Usar SSL |
| MS SQL Server | Servidor Microsoft SQL Server | 1433 | Encrypt, Trust server certificate, TLS legado, Timeout de query (s) |
| Oracle | Base Oracle | — (va en la connect string) | Un único campo Connect string |
| SQLite | Base de datos local, en archivo | — (no hay servidor) | Sin credenciales; la base vive con la app |
Nota
Los cinco primeros son bases de datos externas — servidores tuyos, que la plataforma contacta por la red con las credenciales que registres. El SQLite es el caso especial: una base de datos en archivo, guardada con la propia app.
PostgreSQL, MySQL y MariaDB
Los tres comparten el mismo formulario:
| Campo | Qué es |
|---|---|
| Host | Dirección del servidor (nombre o IP) |
| Puerto | Viene relleno con el del motor (5432 o 3306) |
| Database | El nombre de la base de datos dentro del servidor |
| Usuario | La cuenta con la que la plataforma se conecta |
| Contraseña | La contraseña de esa cuenta — nunca vuelve a mostrarse |
| Usar SSL | Activa el cifrado de la conexión, si el servidor lo exige o lo soporta |
Consejo
Usa una cuenta de base de datos dedicada a la app, con privilegios solo sobre lo que la app necesita. Todas las queries — de APIs, scripts y consola — corren con esta cuenta, y sus privilegios son el techo de lo que la app puede hacer.
En MySQL y MariaDB, una columna BOOLEAN (TINYINT(1)) entra en el modelo
como Sí/No. Las tablas traídas al modelo antes de esta versión mantienen la
columna como número; la casilla funciona igual con ella (1 marcada, 0
desmarcada).
PostgreSQL de la plataforma
Si la instalación tiene un servidor PostgreSQL configurado, la pestaña Interno del modal de creación ofrece PostgreSQL sin ninguno de los campos anteriores: la plataforma crea una base de datos nueva en ese servidor, con una cuenta propia, y guarda las credenciales cifradas. La base queda cerrada a las demás apps y se elimina cuando se elimina el datasource. Para todo lo demás (modelo, APIs, consola SQL) se comporta como un PostgreSQL normal.
MS SQL Server
Además de Host, Puerto (1433), Database, Usuario y Contraseña, el SQL Server trae cuatro opciones propias:
| Opción | Para qué sirve |
|---|---|
| Timeout de query (s) | Tiempo máximo de cada query, en segundos (viene a 30). Súbelo si tienes stored procedures largas — por debajo de eso, mueren a medias con error de timeout. |
| Encrypt | Cifra la conexión (viene activado). |
| Trust server certificate | Acepta el certificado del servidor sin validarlo — típico en servidores internos con certificado propio. |
| TLS legado (SQL Server antiguo) | Ver abajo. |
El propio formulario explica cuándo activar el último: «Activa el TLS legado si la conexión falla con un SQL Server antiguo (2008/2012) con errores de SSL/TLS — permite el handshake con cifrados/protocolos antiguos (implica confiar en el certificado del servidor).»

Consejo
¿Conexión a un SQL Server 2008/2012 fallando con mensajes de SSL? Casi siempre es esto: activa TLS legado y prueba de nuevo. La opción baja el nivel de seguridad solo de esta conexión — no afecta a los otros datasources.
Oracle
Oracle prescinde de host y puerto separados — la dirección va toda en un campo:
| Campo | Qué es |
|---|---|
| Connect string | En el formato host:port/service_name — ej.: ora.interno.ejemplo.es:1521/CRMPROD |
| Usuario | El schema/cuenta Oracle con el que la plataforma se conecta |
| Contraseña | La contraseña de esa cuenta |

Nota
En Oracle, conectarse como un usuario es entrar en su schema — las tablas de ese schema aparecen en el árbol de objetos sin prefijo.
SQLite — la base de datos que vive con la app
El SQLite es el tipo para datos que pertenecen a la app: prototipos, demos, una base pequeña que no justifica un servidor. No hay Host, Puerto, Usuario ni Contraseña — hay un archivo, y es la plataforma la que lo guarda:
- Elige SQLite en el campo Tipo.
- Opcionalmente, usa Importar base de datos (opcional) para enviar un
archivo
.db,.sqliteo.sqlite3que ya tengas. - Pulsa Crear. Como dice la ayuda del campo: «Sin archivo, se crea una base de datos vacía. El archivo queda guardado con la app — no hay rutas que indicar.»

Tres comportamientos que hay que saber:
- Crear no tiene Probar conexión — el archivo aún no existe, no hay nada que probar. El botón aparece después de guardar, en la edición.
- Editar nunca cambia el archivo — el archivo es el datasource; editar la conexión no crea una base nueva ni elimina datos.
- Eliminar el datasource se despide de los datos — al contrario que en los tipos externos, aquí la base vive con la app.
Lo que cada motor sabe hacer
La plataforma solo te ofrece lo que el motor soporta — las opciones que no existen en un motor no aparecen en su menú. El mapa:
| Capacidad | PostgreSQL | MySQL | MariaDB | MS SQL Server | Oracle | SQLite |
|---|---|---|---|---|---|---|
| Vistas | Sí | Sí | Sí | Sí | Sí | Sí |
| Funciones / procedimientos | Sí | Sí | Sí | Sí | Sí | No |
| Triggers — momentos | BEFORE, AFTER, INSTEAD OF | BEFORE, AFTER | BEFORE, AFTER | AFTER, INSTEAD OF | BEFORE, AFTER, INSTEAD OF | BEFORE, AFTER, INSTEAD OF |
| Trigger con varios eventos a la vez | Sí | No (uno por evento) | No (uno por evento) | Sí | Sí | No |
| Trigger diseñado en el canvas visual | Sí | Sí | Sí | Sí | Sí | No (solo SQL) |
| Cambiar tipo/nulidad de columna existente | Sí | Sí | Sí | Sí | Sí | No |
| Campo Schema (opcional) en los objetos | Sí | — | — | Sí | Sí | — |
Nota
En SQL Server no existe BEFORE — el equivalente es INSTEAD OF. Y en SQLite, cambiar el tipo de una columna existente obliga a recrear la tabla; la opción no aparece.
Crear y cambiar objetos (DDL)
No necesitas otra herramienta para trabajar la estructura de la base: el menú ⋯ de cada datasource en el panel Datos crea objetos, y el árbol edita los existentes. En todos los casos la plataforma genera el SQL para el motor del datasource y lo ejecuta de verdad en la base de datos.
| Acción | Qué hace |
|---|---|
| Nueva tabla | «Define las columnas — generamos el CREATE TABLE para el motor y lo ejecutamos.» Columnas con tipo, Permite NULL, Clave primaria (PK), Autoincremento, y nombre amigable para las apps. |
| Editar estructura (en una tabla) | «Cambia columnas e índices — genera y ejecuta el ALTER / CREATE INDEX correspondiente.» También crea y elimina índices. |
| Nueva vista | Escribes el SQL de la vista y se ejecuta. |
| Nueva función / procedimiento | Escribes el SQL y se ejecuta (en los motores que los soportan). |
| Nuevo trigger | Datos iniciales en el modal; el flujo se construye después en el canvas visual. |
| Actualizar objetos | Relee la estructura de la base — úsalo después de cambios hechos fuera de la plataforma. |

Atención
Esto es DDL de verdad, en tu base de datos de verdad — un DROP o un ALTER aquí es tan definitivo como ejecutado en cualquier otro cliente SQL. Y solo funciona si el Usuario de la conexión tiene privilegios para crear y cambiar objetos.
La Consola SQL
Al fondo de la pantalla Modelo de cada datasource vive la Consola SQL: escribe a la izquierda, pulsa Ejecutar, y los resultados aparecen en tabla (hasta 500 filas), con filtros por columna. El editor autocompleta con las tablas y columnas del datasource, y el Ver datos de cualquier tabla del árbol abre la consola ya con un select listo.

La consola es de administradores, y las operaciones de escritura quedan registradas en la auditoría — los detalles están en la página Probar la conexión y seguridad.
Marcadores de parámetros por motor
Cuando escribes SQL en scripts, los valores pasan en una lista aparte — nunca pegados a la frase — y cada motor tiene su sintaxis de marcador:
| Motor | Marcadores | Ejemplo |
|---|---|---|
| PostgreSQL | $1, $2, … |
select * from contas where cidade = $1 |
| MySQL / MariaDB | ? |
select * from contas where cidade = ? |
| MS SQL Server | @p1, @p2, … |
select * from contas where cidade = @p1 |
| Oracle | :1, :2, … |
select * from contas where cidade = :1 |
| SQLite | ? |
select * from contas where cidade = ? |
Consejo
En los pasos SQL de las APIs no necesitas esta tabla: escribes
:nombreDelArg y la plataforma se encarga de la conversión al motor
elegido. En Oracle, evita pasar fechas como parámetro — prefiere el
literal, ej.: TO_DATE('2026-06-25','YYYY-MM-DD').