Migración
El ORM PIPE permite la gestión de DDL (Lenguaje de Definición de Datos) por medio de migraciones.
#1 Creación de tabla.
#2 Borrado de tabla.
#3 Creación de índice.
#4 Creación de índice único.
#5 Borrado de índice.
#6 Borrado de restricción.
#7 Creación de llave primaria.
#8 Borrado de llave primaria.
#9 Creación de llave foránea.
#10 Borrado de llave foránea.
#11 Creación de campo.
#12 Cambio de campo.
#13 Borrado de campo.
A continuación, se presenta un listado de los 63 métodos disponibles en la clase PIPE\Migracion\Migracion para la gestión de DDL en los motores de base de datos MySQL, PostgreSQL, SQLite y SQL Server.
| Método | Tipo de dato | MySQL | PostgreSQL | SQLite | SQL Server |
|---|---|---|---|---|---|
| - | Soporte | ||||
| borrarCampo | - | ✅ | ✅ | ✅ | ✅ |
| borrarIndice | - | ✅ | ✅ | ✅ | ✅ |
| borrarLlaveForanea | - | ✅ | ✅ | ✅ | ✅ |
| borrarLlavePrimaria | - | ✅ | ✅ | ✅ | ✅ |
| borrarRestriccion | - | ✅ | ✅ | ✅ | ✅ |
| borrarTabla | - | ✅ | ✅ | ✅ | ✅ |
| cambiarCampo | - | ✅ | ✅ | ✅ | ✅ |
| crearCampo | - | ✅ | ✅ | ✅ | ✅ |
| crearIndice | - | ✅ | ✅ | ✅ | ✅ |
| crearIndiceUnico | - | ✅ | ✅ | ✅ | ✅ |
| crearLlaveForanea | - | ✅ | ✅ | ✅ | ✅ |
| crearLlavePrimaria | - | ✅ | ✅ | ✅ | ✅ |
| crearTabla | - | ✅ | ✅ | ✅ | ✅ |
| espacioTabla | - | ❌ | ✅ | ❌ | ❌ |
| llaveForanea | - | ✅ | ✅ | ✅ | ✅ |
| llavePrimaria | - | ✅ | ✅ | ✅ | ✅ |
| motor | - | ✅ | ❌ | ❌ | ❌ |
| personalizado | - | ✅ | ✅ | ✅ | ✅ |
| restriccion | - | ✅ | ✅ | ✅ | ✅ |
| tabla | - | ✅ | ✅ | ✅ | ✅ |
| Enteros | Soporte | ||||
| enteroMuyPequeno | TYNYINT | ✅ | ❌ | ❌ | ✅ |
| enteroPequeno | SMALLINT | ✅ | ✅ | ❌ | ✅ |
| enteroMediano | MEDIUMINT | ✅ | ❌ | ❌ | ❌ |
| entero | INT / INTEGER | ✅ | ✅ | ✅ | ✅ |
| enteroGrande | BIGINT | ✅ | ✅ | ❌ | ✅ |
| serialPequeno | SMALLSERIAL | ❌ | ✅ | ❌ | ❌ |
| serial | SERIAL | ❌ | ✅ | ❌ | ❌ |
| serialGrande | BIGSERIAL | ❌ | ✅ | ❌ | ❌ |
| Decimales | Soporte | ||||
| decimal | DECIMAL(p,s) | ✅ | ✅ | ✅ | ✅ |
| numerico | NUMERIC(p,s) | ✅ | ✅ | ✅ | ✅ |
| flotante | FLOAT | ✅ | ✅ | ✅ | ✅ |
| doble | DOUBLE | ✅ | ✅ | ✅ | ✅ |
| doblePrecision | DOUBLE PRECISION | ✅ | ✅ | ❌ | ❌ |
| real | REAL | ✅ | ✅ | ✅ | ✅ |
| monetario | MONEY | ❌ | ❌ | ❌ | ✅ |
| monetarioPequeno | SMALLMONEY | ❌ | ❌ | ❌ | ✅ |
| Cadenas de texto | Soporte | ||||
| caracter | CHAR(n) | ✅ | ✅ | ✅ | ✅ |
| cadena | VARCHAR(n) | ✅ | ✅ | ✅ | ✅ |
| nCaracter | NCHAR(n) | ❌ | ❌ | ❌ | ✅ |
| nCadena | NVARCHAR(n) | ❌ | ❌ | ❌ | ✅ |
| textoMuyPequeno | TINYTEXT | ✅ | ❌ | ❌ | ❌ |
| textoMediano | MEDIUMTEXT | ✅ | ❌ | ❌ | ❌ |
| texto | TEXT | ✅ | ✅ | ✅ | ✅ |
| textoLargo | LONGTEXT | ✅ | ❌ | ❌ | ❌ |
| Marcas de tiempo | Soporte | ||||
| fecha | DATE | ✅ | ✅ | ✅ | ✅ |
| fechaHora | DATETIME | ✅ | ❌ | ✅ | ✅ |
| fechaHora2 | DATETIME2 | ❌ | ❌ | ❌ | ✅ |
| marcaTiempo | TIMESTAMP | ✅ | ✅ | ✅ | ✅ |
| hora | TIME | ✅ | ✅ | ✅ | ✅ |
| anio | YEAR | ✅ | ❌ | ❌ | ❌ |
| Lógicos | Soporte | ||||
| booleano | BOOLEAN | ✅ | ✅ | ✅ | ✅ |
| digitoBinario | BIT | ❌ | ❌ | ❌ | ✅ |
| Binarios | Soporte | ||||
| binario | BINARY(n) | ✅ | ✅ | ❌ | ✅ |
| binarioVariable | VARBINARY(n) | ✅ | ✅ | ❌ | ✅ |
| binarioGrande | BLOB | ✅ | ✅ | ✅ | ✅ |
| binarioMatriz | BYTEA | ❌ | ✅ | ❌ | ❌ |
| Geométricos | Soporte | ||||
| coordenada | POINT | ✅ | ✅ | ❌ | ❌ |
| coordenadaLinea | LINESTRING | ✅ | ✅ | ❌ | ❌ |
| poligono | POLYGON | ✅ | ✅ | ❌ | ❌ |
| Otros | Soporte | ||||
| enumerado | ENUM(n...) | ✅ | ✅ | ❌ | ✅ |
| conjunto | SET(n...) | ✅ | ❌ | ❌ | ❌ |
| json | JSON | ✅ | ✅ | ❌ | ✅ |
| jsonb | JSONB | ❌ | ✅ | ❌ | ❌ |
A continuación, se presenta un listado de los 10 métodos disponibles en la clase PIPE\Migracion\Atributo para la gestión de DDL en los motores de base de datos MySQL, PostgreSQL, SQLite y SQL Server.
| Método | Atributo | MySQL | PostgreSQL | SQLite | SQL Server |
|---|---|---|---|---|---|
| - | Soporte | ||||
| autoincrementable | AUTO_INCREMENT / GENERATED BY DEFAULT AS IDENTITY / AUTOINCREMENT / IDENTITY | ✅ | ✅ | ✅ | ✅ |
| chequeo | CHECK | ✅ | ✅ | ✅ | ✅ |
| cotejamiento | COLLATE | ✅ | ✅ | ✅ | ✅ |
| identidad | IDENTITY | ❌ | ❌ | ❌ | ✅ |
| llavePrimaria | PRIMARY KEY | ✅ | ✅ | ✅ | ✅ |
| noNulo | NOT NULL | ✅ | ✅ | ✅ | ✅ |
| nulo | NULL | ✅ | ✅ | ✅ | ✅ |
| predeterminado | DEFAULT | ✅ | ✅ | ✅ | ✅ |
| sinSigno | UNSIGNED | ✅ | ❌ | ❌ | ❌ |
| unico | UNIQUE | ✅ | ✅ | ✅ | ✅ |
A continuación, se presenta un listado de las 48 constantes disponibles en la clase PIPE\Migracion\Atributo para la gestión de DDL en los motores de base de datos MySQL, PostgreSQL, SQLite y SQL Server.
| Constante | Tipo de dato | MySQL | PostgreSQL | SQLite | SQL Server |
|---|---|---|---|---|---|
| Enteros | Soporte | ||||
| Atributo::ENTERO_MUY_PEQUENO | TYNYINT | ✅ | ❌ | ❌ | ✅ |
| Atributo::ENTERO_PEQUENO | SMALLINT | ✅ | ✅ | ❌ | ✅ |
| Atributo::ENTERO_MEDIANO | MEDIUMINT | ✅ | ❌ | ❌ | ❌ |
| Atributo::ENTERO | INT / INTEGER | ✅ | ✅ | ✅ | ✅ |
| Atributo::ENTERO_GRANDE | BIGINT | ✅ | ✅ | ❌ | ✅ |
| Atributo::SERIAL_PEQUENO | SMALLSERIAL | ❌ | ✅ | ❌ | ❌ |
| Atributo::SERIAL | SERIAL | ❌ | ✅ | ❌ | ❌ |
| Atributo::SERIAL_GRANDE | BIGSERIAL | ❌ | ✅ | ❌ | ❌ |
| Decimales | Soporte | ||||
| Atributo::DECIMAL | DECIMAL(p,s) | ✅ | ✅ | ✅ | ✅ |
| Atributo::NUMERICO | NUMERIC(p,s) | ✅ | ✅ | ✅ | ✅ |
| Atributo::FLOTANTE | FLOAT | ✅ | ✅ | ✅ | ✅ |
| Atributo::DOBLE | DOUBLE | ✅ | ✅ | ✅ | ✅ |
| Atributo::DOBLE_PRECISION | DOUBLE PRECISION | ✅ | ✅ | ❌ | ❌ |
| Atributo::REAL | REAL | ✅ | ✅ | ✅ | ✅ |
| Atributo::MONETARIO | MONEY | ❌ | ❌ | ❌ | ✅ |
| Atributo::MONETARIO_PEQUENO | SMALLMONEY | ❌ | ❌ | ❌ | ✅ |
| Cadenas de texto | Soporte | ||||
| Atributo::CARACTER | CHAR(n) | ✅ | ✅ | ✅ | ✅ |
| Atributo::CADENA | VARCHAR(n) | ✅ | ✅ | ✅ | ✅ |
| Atributo::N_CARACTER | NCHAR(n) | ❌ | ❌ | ❌ | ✅ |
| Atributo::N_CADENA | NVARCHAR(n) | ❌ | ❌ | ❌ | ✅ |
| Atributo::TEXTO_MUY_PEQUENO | TINYTEXT | ✅ | ❌ | ❌ | ❌ |
| Atributo::TEXTO_MEDIANO | MEDIUMTEXT | ✅ | ❌ | ❌ | ❌ |
| Atributo::TEXTO | TEXT | ✅ | ✅ | ✅ | ✅ |
| Atributo::TEXTO_LARGO | LONGTEXT | ✅ | ❌ | ❌ | ❌ |
| Marcas de tiempo | Soporte | ||||
| Atributo::FECHA | DATE | ✅ | ✅ | ✅ | ✅ |
| Atributo::FECHA_HORA | DATETIME | ✅ | ❌ | ✅ | ✅ |
| Atributo::FECHA_HORA_2 | DATETIME2 | ❌ | ❌ | ❌ | ✅ |
| Atributo::MARCA_TIEMPO | TIMESTAMP | ✅ | ✅ | ✅ | ✅ |
| Atributo::HORA | TIME | ✅ | ✅ | ✅ | ✅ |
| Atributo::ANIO | YEAR | ✅ | ❌ | ❌ | ❌ |
| Lógicos | Soporte | ||||
| Atributo::BOOLEANO | BOOLEAN | ✅ | ✅ | ✅ | ✅ |
| Atributo::DIGITO_BINARIO | BIT | ❌ | ❌ | ❌ | ✅ |
| Binarios | Soporte | ||||
| Atributo::BINARIO | BINARY(n) | ✅ | ✅ | ❌ | ✅ |
| Atributo::BINARIO_VARIABLE | VARBINARY(n) | ✅ | ✅ | ❌ | ✅ |
| Atributo::BINARIO_GRANDE | BLOB | ✅ | ✅ | ✅ | ✅ |
| Atributo::BINARIO_MATRIZ | BYTEA | ❌ | ✅ | ❌ | ❌ |
| Geométricos | Soporte | ||||
| Atributo::COORDENADA | POINT | ✅ | ✅ | ❌ | ❌ |
| Atributo::COORDENADA_LINEA | LINESTRING | ✅ | ✅ | ❌ | ❌ |
| Atributo::POLIGONO | POLYGON | ✅ | ✅ | ❌ | ❌ |
| Otros | Soporte | ||||
| Atributo::ENUMERADO | ENUM(n...) | ✅ | ✅ | ❌ | ✅ |
| Atributo::CONJUNTO | SET(n...) | ✅ | ❌ | ❌ | ❌ |
| Atributo::JSON | JSON | ✅ | ✅ | ❌ | ✅ |
| Atributo::JSONB | JSONB | ❌ | ✅ | ❌ | ❌ |
| Atributo::CASCADA | CASCADE | ✅ | ✅ | ✅ | ✅ |
| Atributo::NULO | SET NULL | ✅ | ✅ | ✅ | ✅ |
| Atributo::PREDETERMINADO | SET DEFAULT | ✅ | ✅ | ✅ | ✅ |
| Atributo::NO_ACCION | NO ACTION | ✅ | ✅ | ✅ | ✅ |
| Atributo::RESTRICCION | RESTRICT | ✅ | ✅ | ✅ | ✅ |
Si utilizas el Modelo para interactuar con los datos de la base de datos, tendrás la ventaja de poder omitir las convenciones que tiene el ORM PIPE y adaptarse a la estructura que tenga tu tabla en la base de datos, ya que el Constructor de Consultas se adapta por defecto a las convenciones.