Stored Procedures [dbo].[AL_TOGGLE_CONSTRAINTS]
Properties
PropertyValue
ANSI Nulls OnYes
Quoted Identifier OnYes
Parameters
NameData TypeMax Length (Bytes)
@P_OBJECTnvarchar(10)20
@P_MODEnvarchar(20)40
SQL Script
CREATE PROCEDURE [dbo].[AL_TOGGLE_CONSTRAINTS]
   @P_OBJECT NVARCHAR(10),
   @P_MODE   NVARCHAR(20)
AS
BEGIN
SET NOCOUNT ON
   IF @P_MODE NOT IN ('ENABLE', 'DISABLE')
      RAISERROR 50000 'MODE needs to be either ENABLE or DISABLE'

   IF @P_OBJECT NOT IN ('ALL', 'TRG', 'FK')
      RAISERROR 50000 'OBJECT needs to be either ALL, TRG or FK'

   DECLARE
      @V_TABLE_NAME NVARCHAR(40),
      @V_FK_NAME    NVARCHAR(40)

   DECLARE C_TRIGGERS CURSOR FOR
      SELECT DISTINCT S2.NAME TABLE_NAME
      FROM SYSOBJECTS S1, SYSOBJECTS S2
      WHERE S1.TYPE = 'TR' AND S1.PARENT_OBJ = S2.ID

   DECLARE C_FKS CURSOR FOR
      SELECT S2.NAME TABLE_NAME, S1.NAME FK_NAME
      FROM SYSOBJECTS S1, SYSOBJECTS S2
      WHERE S1.TYPE = 'F' AND S1.PARENT_OBJ = S2.ID

   IF @P_OBJECT IN ('ALL', 'TRG')
   BEGIN
      OPEN C_TRIGGERS
      FETCH NEXT FROM C_TRIGGERS INTO @V_TABLE_NAME
      WHILE @@FETCH_STATUS = 0
      BEGIN
         EXEC ('ALTER TABLE ' + @V_TABLE_NAME + ' ' + @P_MODE + ' TRIGGER ALL')
         FETCH NEXT FROM C_TRIGGERS INTO @V_TABLE_NAME
      END
      CLOSE C_TRIGGERS
   END

   IF @P_OBJECT IN ('ALL', 'FK')
   BEGIN
      IF @P_MODE = 'ENABLE'
         SELECT @P_MODE = 'WITH CHECK CHECK'
      ELSE
         SELECT @P_MODE = 'NOCHECK'

      OPEN C_FKS
      FETCH NEXT FROM C_FKS INTO @V_TABLE_NAME, @V_FK_NAME
      WHILE @@FETCH_STATUS = 0
      BEGIN
         EXEC ('ALTER TABLE ' + @V_TABLE_NAME + ' ' + @P_MODE + ' CONSTRAINT ' + '"' + @V_FK_NAME + '"')
         FETCH NEXT FROM C_FKS INTO @V_TABLE_NAME, @V_FK_NAME
      END
      CLOSE C_FKS
   END

   DEALLOCATE C_TRIGGERS
   DEALLOCATE C_FKS
   SET NOCOUNT OFF
   END
GO
Uses