83 lines
3.4 KiB
MySQL
83 lines
3.4 KiB
MySQL
|
|
-- V016_ROLLBACK.sql
|
||
|
|
-- Reversa de V016__create_rubro.sql.
|
||
|
|
--
|
||
|
|
-- ⚠️ ADVERTENCIA: ejecutar ELIMINA dbo.Rubro, dbo.Rubro_History,
|
||
|
|
-- el permiso 'catalogo:rubros:gestionar' y sus asignaciones.
|
||
|
|
--
|
||
|
|
-- Uso intended: ROLLBACK en entornos NO-productivos.
|
||
|
|
-- Prerequisito: no deben existir FKs vivas apuntando a Rubro (p.ej., Producto, Tarifario).
|
||
|
|
-- Si CAT-002..006 o PRC-001 ya están aplicados, agregar TarifarioBaseId FK,
|
||
|
|
-- este rollback fallará — usar backup.
|
||
|
|
|
||
|
|
SET QUOTED_IDENTIFIER ON;
|
||
|
|
SET ANSI_NULLS ON;
|
||
|
|
SET NOCOUNT ON;
|
||
|
|
GO
|
||
|
|
|
||
|
|
-- ═══════════════════════════════════════════════════════════════════════
|
||
|
|
-- 1. Apagar SYSTEM_VERSIONING + remover PERIOD en Rubro
|
||
|
|
-- ═══════════════════════════════════════════════════════════════════════
|
||
|
|
|
||
|
|
IF EXISTS (SELECT 1 FROM sys.tables WHERE object_id = OBJECT_ID('dbo.Rubro') AND temporal_type = 2)
|
||
|
|
BEGIN
|
||
|
|
ALTER TABLE dbo.Rubro SET (SYSTEM_VERSIONING = OFF);
|
||
|
|
PRINT 'Rubro: SYSTEM_VERSIONING OFF.';
|
||
|
|
END
|
||
|
|
GO
|
||
|
|
|
||
|
|
IF EXISTS (SELECT 1 FROM sys.periods WHERE object_id = OBJECT_ID('dbo.Rubro'))
|
||
|
|
BEGIN
|
||
|
|
ALTER TABLE dbo.Rubro DROP PERIOD FOR SYSTEM_TIME;
|
||
|
|
PRINT 'Rubro: PERIOD FOR SYSTEM_TIME dropped.';
|
||
|
|
END
|
||
|
|
GO
|
||
|
|
|
||
|
|
IF COL_LENGTH('dbo.Rubro', 'ValidFrom') IS NOT NULL
|
||
|
|
BEGIN
|
||
|
|
ALTER TABLE dbo.Rubro DROP CONSTRAINT IF EXISTS DF_Rubro_ValidFrom;
|
||
|
|
ALTER TABLE dbo.Rubro DROP CONSTRAINT IF EXISTS DF_Rubro_ValidTo;
|
||
|
|
ALTER TABLE dbo.Rubro DROP COLUMN ValidFrom, ValidTo;
|
||
|
|
PRINT 'Rubro: ValidFrom/ValidTo dropped.';
|
||
|
|
END
|
||
|
|
GO
|
||
|
|
|
||
|
|
IF OBJECT_ID(N'dbo.Rubro_History', N'U') IS NOT NULL
|
||
|
|
BEGIN
|
||
|
|
DROP TABLE dbo.Rubro_History;
|
||
|
|
PRINT 'Rubro_History dropped.';
|
||
|
|
END
|
||
|
|
GO
|
||
|
|
|
||
|
|
-- ═══════════════════════════════════════════════════════════════════════
|
||
|
|
-- 2. Drop índices + tabla Rubro
|
||
|
|
-- ═══════════════════════════════════════════════════════════════════════
|
||
|
|
|
||
|
|
-- Self-FK must be dropped before dropping the table (SQL Server handles it
|
||
|
|
-- automatically when the table is dropped, but explicit is safer).
|
||
|
|
|
||
|
|
IF OBJECT_ID(N'dbo.Rubro', N'U') IS NOT NULL
|
||
|
|
BEGIN
|
||
|
|
DROP TABLE dbo.Rubro;
|
||
|
|
PRINT 'Table dbo.Rubro dropped.';
|
||
|
|
END
|
||
|
|
GO
|
||
|
|
|
||
|
|
-- ═══════════════════════════════════════════════════════════════════════
|
||
|
|
-- 3. Remover permiso 'catalogo:rubros:gestionar' + RolPermiso
|
||
|
|
-- ═══════════════════════════════════════════════════════════════════════
|
||
|
|
|
||
|
|
DELETE rp
|
||
|
|
FROM dbo.RolPermiso rp
|
||
|
|
JOIN dbo.Permiso p ON p.Id = rp.PermisoId
|
||
|
|
WHERE p.Codigo = 'catalogo:rubros:gestionar';
|
||
|
|
GO
|
||
|
|
|
||
|
|
DELETE FROM dbo.Permiso
|
||
|
|
WHERE Codigo = 'catalogo:rubros:gestionar';
|
||
|
|
GO
|
||
|
|
|
||
|
|
PRINT '';
|
||
|
|
PRINT 'V016 rolled back. dbo.Rubro and dbo.Rubro_History removed.';
|
||
|
|
PRINT 'catalogo:rubros:gestionar permission and role assignment removed.';
|
||
|
|
GO
|