>데이터 베이스 >MySQL 튜토리얼 >이름을 모르고 SQL Server 기본 제약 조건을 삭제하는 방법은 무엇입니까?

이름을 모르고 SQL Server 기본 제약 조건을 삭제하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-30 03:58:09818검색

How to Drop SQL Server Default Constraints Without Knowing Their Names?

이름을 모르고 SQL 기본 제약 조건 삭제

배경

SQL Server에서는 열에 대한 기본 제약 조건 생성이 가능합니다. . 그러나 초기 버전에서는 오타로 인해 "DF_SomeTable_ColName" 및 "DF_SmoeTable_ColName"과 같은 제약 조건 이름이 일관되지 않는 경우가 많았습니다. 이는 정확한 이름을 모르고 기본 제약 조건을 삭제하려고 할 때 문제가 됩니다.

해결 방법

이름을 모르고 기본 제약 조건을 효과적으로 제거하려면 다음 접근 방식을 따르세요. 사용할 수 있습니다:

  1. 동적으로 삭제 명령 생성: sys.tables, sys.default_constraints 및 sys.columns 테이블을 조합하여 제약 조건을 삭제하는 SQL 명령을 나타내는 동적 문자열을 구성할 수 있습니다. 이 문자열은 제거할 테이블, 열 및 특정 기본 제약 조건을 식별합니다.
  2. 동적 명령 실행: 삭제 명령 문자열이 생성되면 실행(@)을 사용하여 동적으로 실행할 수 있습니다. 명령). 이 단계에서는 명령을 실행하고 기본 제약 조건을 제거합니다.

예제 코드

다음 코드 샘플은 설명된 접근 방식의 구현을 제공합니다.

declare @schema_name nvarchar(256)
declare @table_name nvarchar(256)
declare @col_name nvarchar(256)
declare @Command  nvarchar(1000)

set @schema_name = N'MySchema'
set @table_name = N'Department'
set @col_name = N'ModifiedDate'

select @Command = 'ALTER TABLE ' + @schema_name + '.[' + @table_name + '] DROP CONSTRAINT ' + d.name
 from sys.tables t
  join sys.default_constraints d on d.parent_object_id = t.object_id
  join sys.columns c on c.object_id = t.object_id and c.column_id = d.parent_column_id
 where t.name = @table_name
  and t.schema_id = schema_id(@schema_name)
  and c.name = @col_name

--print @Command

execute (@Command)

이 기술을 활용하면 오타로 인한 이름 불일치에 관계없이 기본 제약 조건을 동적으로 제거할 수 있습니다. 이 접근 방식을 사용하면 알 수 없는 제약 조건 이름으로 인해 오류가 발생하지 않고 제약 조건이 성공적으로 삭제됩니다.

위 내용은 이름을 모르고 SQL Server 기본 제약 조건을 삭제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.