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

名前のない制約を削除する

    名前のない個々のデフォルトの制約を列にドロップするには、次のコードを使用します。

    DECLARE @ConstraintName VARCHAR(256)
    SET @ConstraintName = (
         SELECT             obj.name
         FROM               sys.columns col 
    
         LEFT OUTER JOIN    sys.objects obj 
         ON                 obj.object_id = col.default_object_id 
         AND                obj.type = 'F' 
    
         WHERE              col.object_id = OBJECT_ID('TableName') 
         AND                obj.name IS NOT NULL
         AND                col.name = 'ColunmName'
    )   
    
    IF(@ConstraintName IS NOT NULL)
    BEGIN
        EXEC ('ALTER TABLE [TableName] DROP CONSTRAINT ['[email protected]+']')
    END
    

    デフォルトの列に対してこれを実行したい場合は、おそらく元の質問よりも一般的であり、多くの人がGoogle検索からこれに到達すると確信しているので、行を変更するだけです。

    obj.type = 'F'
    

    obj.type = 'D'
    


    1. 変数を使用したSQL使用ステートメント

    2. php-mysql結果行の重複フィールドを削除します

    3. PostgreSQLでクロス集計用の列を動的に生成する

    4. HTML入力フォームボックスが最初のスペースの後にPHP値を入力しない