110 lines
4.2 KiB
Transact-SQL
110 lines
4.2 KiB
Transact-SQL
/* Preparación únicamente. Ejecutar junto con los PA dentro de una transacción
|
|
de instalación administrada por el ejecutor, después de respaldo y autorización.
|
|
No mueve archivos ni elimina documentos históricos. */
|
|
SET NOCOUNT ON;
|
|
|
|
IF EXISTS
|
|
(
|
|
SELECT CveFraccionamientoEtapa, CveTipoDocumento
|
|
FROM dbo.Tra_DocumentosSolicitud
|
|
WHERE EsActivo = 1
|
|
GROUP BY CveFraccionamientoEtapa, CveTipoDocumento
|
|
HAVING COUNT(*) > 1
|
|
)
|
|
THROW 51000, 'Existen versiones activas duplicadas por etapa/tipo. Resolver su versión vigente antes de instalar; no se eliminarán archivos.', 1;
|
|
|
|
IF COL_LENGTH('dbo.Tra_DocumentosSolicitud', 'Vencido') IS NULL
|
|
ALTER TABLE dbo.Tra_DocumentosSolicitud
|
|
ADD Vencido bit NOT NULL
|
|
CONSTRAINT DF_Tra_DocumentosSolicitud_Vencido DEFAULT (0);
|
|
|
|
IF EXISTS
|
|
(
|
|
SELECT 1 FROM sys.indexes
|
|
WHERE object_id = OBJECT_ID('dbo.Tra_DocumentosSolicitud')
|
|
AND name = 'UX_Tra_DocumentosSolicitud_Solicitud_TipoDocumento'
|
|
)
|
|
DROP INDEX UX_Tra_DocumentosSolicitud_Solicitud_TipoDocumento
|
|
ON dbo.Tra_DocumentosSolicitud;
|
|
|
|
ALTER TABLE dbo.Tra_DocumentosSolicitud ALTER COLUMN CveSolicitud int NULL;
|
|
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1 FROM sys.indexes
|
|
WHERE object_id = OBJECT_ID('dbo.Tra_DocumentosSolicitud')
|
|
AND name = 'UX_Tra_DocumentosSolicitud_Etapa_TipoDocumento'
|
|
)
|
|
CREATE UNIQUE INDEX UX_Tra_DocumentosSolicitud_Etapa_TipoDocumento
|
|
ON dbo.Tra_DocumentosSolicitud (CveFraccionamientoEtapa, CveTipoDocumento)
|
|
WHERE EsActivo = 1;
|
|
|
|
IF COL_LENGTH('dbo.Tra_SolicitudDocumentoConfiguracion', 'CveFraccionamientoEtapa') IS NULL
|
|
ALTER TABLE dbo.Tra_SolicitudDocumentoConfiguracion
|
|
ADD CveFraccionamientoEtapa int NULL;
|
|
GO
|
|
|
|
UPDATE C
|
|
SET CveFraccionamientoEtapa = S.CveFraccionamientoEtapa
|
|
FROM dbo.Tra_SolicitudDocumentoConfiguracion AS C
|
|
INNER JOIN dbo.Tra_Solicitudes AS S ON S.CveSolicitud = C.CveSolicitud
|
|
WHERE C.CveFraccionamientoEtapa IS NULL;
|
|
|
|
ALTER TABLE dbo.Tra_SolicitudDocumentoConfiguracion
|
|
ALTER COLUMN CveFraccionamientoEtapa int NOT NULL;
|
|
|
|
IF COL_LENGTH('dbo.Tra_SolicitudDocumentoConfiguracion', 'CveConfiguracionDocumento') IS NULL
|
|
BEGIN
|
|
ALTER TABLE dbo.Tra_SolicitudDocumentoConfiguracion
|
|
DROP CONSTRAINT PK_Tra_SolicitudDocumentoConfiguracion;
|
|
ALTER TABLE dbo.Tra_SolicitudDocumentoConfiguracion
|
|
ALTER COLUMN CveSolicitud int NULL;
|
|
ALTER TABLE dbo.Tra_SolicitudDocumentoConfiguracion
|
|
ADD CveConfiguracionDocumento int IDENTITY(1, 1) NOT NULL
|
|
CONSTRAINT PK_Tra_SolicitudDocumentoConfiguracion PRIMARY KEY;
|
|
END;
|
|
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1 FROM sys.foreign_keys
|
|
WHERE name = 'FK_Tra_SolicitudDocumentoConfiguracion_Etapa'
|
|
)
|
|
ALTER TABLE dbo.Tra_SolicitudDocumentoConfiguracion WITH CHECK
|
|
ADD CONSTRAINT FK_Tra_SolicitudDocumentoConfiguracion_Etapa
|
|
FOREIGN KEY (CveFraccionamientoEtapa)
|
|
REFERENCES dbo.FraccionamientosEtapas (CveFraccionamientoEtapa);
|
|
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1 FROM sys.indexes
|
|
WHERE object_id = OBJECT_ID('dbo.Tra_SolicitudDocumentoConfiguracion')
|
|
AND name = 'UX_Tra_ConfiguracionDocumento_Solicitud'
|
|
)
|
|
BEGIN
|
|
CREATE UNIQUE INDEX UX_Tra_ConfiguracionDocumento_Solicitud
|
|
ON dbo.Tra_SolicitudDocumentoConfiguracion (CveSolicitud, CveTipoDocumento)
|
|
WHERE CveSolicitud IS NOT NULL;
|
|
CREATE UNIQUE INDEX UX_Tra_ConfiguracionDocumento_Etapa
|
|
ON dbo.Tra_SolicitudDocumentoConfiguracion (CveFraccionamientoEtapa, CveTipoDocumento)
|
|
WHERE CveSolicitud IS NULL;
|
|
END;
|
|
|
|
INSERT INTO dbo.Bit_Campos
|
|
(CveTabla, NombreCampoSQL, NombreMostrar, MostrarEnBitacora, TipoDatoSQL, Activo)
|
|
SELECT T.CveTabla, C.Campo, C.Titulo, 1, C.Tipo, 1
|
|
FROM dbo.Bit_Tablas AS T
|
|
INNER JOIN
|
|
(
|
|
VALUES
|
|
('Tra_DocumentosSolicitud', 'Vencido', 'Requiere renovación', 'bit'),
|
|
('Tra_DocumentosSolicitud', 'EsActivo', 'Versión vigente', 'bit'),
|
|
('Tra_SolicitudDocumentoConfiguracion', 'CveFraccionamientoEtapa', 'Etapa', 'int'),
|
|
('Tra_SolicitudDocumentoConfiguracion', 'CveConfiguracionDocumento', 'Requerimiento', 'int')
|
|
) AS C(Tabla, Campo, Titulo, Tipo) ON C.Tabla = T.NombreTablaSQL
|
|
WHERE NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Bit_Campos AS B
|
|
WHERE B.CveTabla = T.CveTabla AND B.NombreCampoSQL = C.Campo
|
|
);
|
|
GO
|