viernes, 29 de abril de 2016

SQL SERVER: error desde trigger

ALTER TRIGGER [dbo].[Web_Usuarios_Trigger_Controles]
ON [dbo].[Web_Usuarios]
AFTER INSERT, UPDATE
AS 
BEGIN
IF EXISTS (
 SELECT 1
 FROM Web_Usuarios 
 WHERE 
Estado = 'Activa' 
AND [ID] NOT IN (SELECT id FROM INSERTED) /* No es el insertado */
AND [ID Solicitante] IN (SELECT [ID Solicitante] FROM INSERTED) /* Mismo solicitante */
AND 'Activa' IN (SELECT Estado FROM INSERTED) /* El registro insertado está activo */
  )
  BEGIN
 RAISERROR ('Una empresa no puede estar autorizada para más de un cliente.' ,10,1)
 ROLLBACK TRANSACTION
  END 
ELSE
BEGIN
UPDATE [Web_Usuarios] SET [Fecha modificación] = GETDATE() WHERE [ID] IN (SELECT id FROM INSERTED)
END
END
GO

SQL SERVER: crear clave foránea si no existe

IF NOT EXISTS (
SELECT * 
FROM sys.foreign_keys 
WHERE object_id = OBJECT_ID(N'[dbo].[FK_Web_Usuarios_Web_Usuarios_Maestro]') 
)
BEGIN
ALTER TABLE Web_Usuarios 
WITH CHECK ADD CONSTRAINT [FK_Web_Usuarios_Web_Usuarios_Maestro]
FOREIGN KEY([ID Usuario Web])
REFERENCES [Web_Usuarios_Maestro] ([ID Usuario Web])
ALTER TABLE Web_Usuarios
CHECK CONSTRAINT [FK_Web_Usuarios_Web_Usuarios_Maestro]
END
GO

SQL SERVER: eliminar unique constraint si existe

IF EXISTS (
SELECT * 
FROM sys.indexes 
WHERE name='AK_Web_Usuarios' AND object_id = OBJECT_ID(N'[dbo].[Web_Usuarios]') 
)
BEGIN
ALTER TABLE [dbo].[Web_Usuarios] DROP CONSTRAINT AK_Web_Usuarios
END

SQL SERVER: elminar índice si existe

IF EXISTS (
SELECT * 
FROM sys.indexes 
WHERE name='I_Web_Usuarios' AND object_id = OBJECT_ID(N'[dbo].[Web_Usuarios]') 
)
BEGIN
DROP INDEX I_Web_Usuarios ON [dbo].[Web_Usuarios]
END
GO

martes, 19 de abril de 2016

domingo, 10 de abril de 2016

SQL Server - Detectar acción en trigger

ALTER TRIGGER dbo.Vigilancias_Trigger_Eventos
ON dbo.Vigilancias
AFTER INSERT, UPDATE, DELETE
AS 
BEGIN
DECLARE @accion AS NVARCHAR(20);
    SET @accion = 'Creación'
    IF EXISTS(SELECT * FROM DELETED)
    BEGIN
        SET @accion = 
            CASE
                WHEN EXISTS(SELECT * FROM INSERTED) THEN 'Modificación'
                ELSE 'Eliminación'
            END
    END
END

SQL Server - Crear o reemplazar trigger

IF OBJECT_ID(N'[dbo].[Certificados_Eventos_Insert]') IS NULL 
    exec ('CREATE TRIGGER dbo.Certificados_Eventos_Insert ON  [dbo].[Certificados] AFTER INSERT AS BEGIN SELECT 1 END')
GO
ALTER TRIGGER dbo.Certificados_Eventos_Insert
ON dbo.Certificados
AFTER INSERT
AS 
BEGIN
INSERT INTO [Certificados_Eventos] ([ID Certificado], [Fecha], [Tipo Documento], [Acción], [Usuario], [ID Documento])
    VALUES (@@IDENTITY , GETDATE(), 'CRT', 'Certificado - Creación', CURRENT_USER, @@IDENTITY )
END
GO

miércoles, 6 de abril de 2016

SQL Server - Crear o reemplazar stored procedure

IF object_id('dbo.Instalar_Version', 'p') is null
    exec ('create procedure Instalar_Version as select 1')
go

ALTER PROCEDURE Instalar_Version
@producto VARCHAR, @version VARCHAR, @estado VARCHAR
AS
BEGIN
END
GO

domingo, 3 de abril de 2016

viernes, 1 de abril de 2016

SQL Server - Crear o reemplazar columna

IF NOT EXISTS (
SELECT * 
FROM sys.columns 
WHERE  object_id = OBJECT_ID(N'[dbo].[Procesos]') 
AND name = 'Requiere Validación Cierre'
)
BEGIN
ALTER TABLE Procesos
ADD [Requiere Validación Cierre] bit NOT NULL 
CONSTRAINT DF_Procesos_Requiere_Validacion_Cierre DEFAULT ((0))
END
GO