-- V004__alter_usuario_rol_fk.sql -- Replaces the hardcoded CHECK constraint on Usuario.Rol with a FOREIGN KEY -- against dbo.Rol(Codigo). Must run AFTER V003 (which creates dbo.Rol and seeds the -- codes already in use, including 'admin'). -- Run on: SIGCM2 (prod) and SIGCM2_Test (integration tests) SET QUOTED_IDENTIFIER ON; SET ANSI_NULLS ON; SET NOCOUNT ON; GO -- 1) Drop the old hardcoded whitelist CHECK constraint (if still present). IF EXISTS ( SELECT 1 FROM sys.check_constraints WHERE name = 'CK_Usuario_Rol' AND parent_object_id = OBJECT_ID(N'dbo.Usuario') ) BEGIN ALTER TABLE dbo.Usuario DROP CONSTRAINT CK_Usuario_Rol; PRINT 'Dropped CK_Usuario_Rol (hardcoded whitelist).'; END ELSE BEGIN PRINT 'CK_Usuario_Rol not present — skipping drop.'; END GO -- 2) Add the FK Usuario.Rol -> Rol.Codigo (only if not already present). IF NOT EXISTS ( SELECT 1 FROM sys.foreign_keys WHERE name = 'FK_Usuario_Rol' AND parent_object_id = OBJECT_ID(N'dbo.Usuario') ) BEGIN ALTER TABLE dbo.Usuario ADD CONSTRAINT FK_Usuario_Rol FOREIGN KEY (Rol) REFERENCES dbo.Rol(Codigo); PRINT 'Added FK_Usuario_Rol -> dbo.Rol(Codigo).'; END ELSE BEGIN PRINT 'FK_Usuario_Rol already present — skipping.'; END GO