sql >> データベース >  >> RDS >> Sqlserver

制約付きの列を削除する方法は?

    まず、問題のあるDEFAULT constraintを削除する必要があります 、その後、列をドロップできます

    alter table tbloffers drop constraint [ConstraintName]
    go
    
    alter table tbloffers drop column checkin
    

    ただし、エラーは他の理由で表示される場合があります。たとえば、ユーザー定義の関数やSCHEMABINDINGを使用したビューなどです。 それらに設定されたオプション。

    UPD: 制約スクリプトの完全に自動化された削除:

    DECLARE @sql NVARCHAR(MAX)
    WHILE 1=1
    BEGIN
        SELECT TOP 1 @sql = N'alter table tbloffers drop constraint ['+dc.NAME+N']'
        from sys.default_constraints dc
        JOIN sys.columns c
            ON c.default_object_id = dc.object_id
        WHERE 
            dc.parent_object_id = OBJECT_ID('tbloffers')
        AND c.name = N'checkin'
        IF @@ROWCOUNT = 0 BREAK
        EXEC (@sql)
    END
    


    1. 整数をチェックするSQLLIKE条件?

    2. ストアドプロシージャ内からのOracleテーブルまたはビューは存在しません

    3. MySQLの共通テーブル式

    4. PostgreSQLクエリの実行時間を取得する