読者です 読者をやめる 読者になる 読者になる

φ(..) ビボ~6 φ(..)

主にAccess、VBAに関する備忘録

トリガを一括で削除する

VB MS Access SQL Server ADO
トリガ名がテーブル名に由来している場合の、トリガ一括削除の例
'/*
'/* トリガーの一括削除
'/*
Public Sub doDropTrigger()

    Dim rs  As New ADODB.Recordset
    Dim adf As ADODB.Field
    
    Set rs = Con.OpenSchema(adSchemaTables)
    
    Do Until rs.EOF
        
        'ユーザーテーブルの場合のみ
        If rs!TABLE_TYPE = "TABLE" Then
            
            SQL = "IF OBJECT_ID (N'trg_" & rs!TABLE_NAME & "', 'TR') IS NOT NULL
            SQL = SQL & vbCrLf & "DROP TRIGGER trg_" & rs!TABLE_NAME
            
            On Error Resume Next
            Con.Execute SQL
            If Err.Number <> 0 Then
                Debug.Print SQL & vbCrLf & Err.Number & ":" & Err.Description
            End If
            On Error GoTo 0
        
        End If
        
        rs.MoveNext
    Loop
    
    rs.Close
    Set rs = Nothing
End Sub