반응형
SQL Server 데이터베이스에서 스크립트를 사용하여 기본 키 삭제
테이블의 기본 키를 삭제해야 합니다.Student
SQL 서버 데이터베이스에 있습니다.
나는 표에서 편집을 했고 내가 받은 스크립트는
ALTER TABLE dbo.Student
DROP CONSTRAINT PK__Student__9CC368536561EF8B
그러나 SQL Server 쿼리 브라우저에서 이 스크립트를 실행하여 기본 키를 삭제하는 경우
메시지가 표시됩니다.
Msg 3728, 레벨 16, 상태 1, 라인 1
'PK__학생__9CC368536561EF8B'는 제약 조건이 아닙니다.
Msg 3727, 레벨 16, 상태 0, 라인 1
내 생각엔PK__Student__9CC368536561EF8B
임의로 생성됩니다. 스크립트를 사용하여 기본 키 제약 조건을 삭제할 수 있도록 도와주십시오.
잘 부탁드립니다.
시스템에서 제약 조건 이름을 조회할 수 있습니다.key_제약 테이블:
SELECT name
FROM sys.key_constraints
WHERE [type] = 'PK'
AND [parent_object_id] = Object_id('dbo.Student');
이름은 상관없지만 삭제하려면 다음 SQL과 동적 SQL을 함께 사용할 수 있습니다.
DECLARE @table NVARCHAR(512), @sql NVARCHAR(MAX);
SELECT @table = N'dbo.Student';
SELECT @sql = 'ALTER TABLE ' + @table
+ ' DROP CONSTRAINT ' + name + ';'
FROM sys.key_constraints
WHERE [type] = 'PK'
AND [parent_object_id] = OBJECT_ID(@table);
EXEC sp_executeSQL @sql;
이 코드는 Aaron Bertrand (출처)의 코드입니다.
간단히 클릭
'데이터베이스' > 테이블 > 테이블 이름 > 키 > 'PK__TableName__30242045'와 같은 제약 조건을 복사합니다.
다음 쿼리를 실행합니다.
Query:alter Table 'TableName' drop constraint PK__TableName__30242045
제가 받은 답변은 변수와 하위 쿼리가 작동하지 않고 동적 SQL 스크립트를 사용해야 한다는 것입니다.다음 작업이 가능성:
DECLARE @SQL VARCHAR(4000)
SET @SQL = 'ALTER TABLE dbo.Student DROP CONSTRAINT |ConstraintName| '
SET @SQL = REPLACE(@SQL, '|ConstraintName|', ( SELECT name
FROM sysobjects
WHERE xtype = 'PK'
AND parent_obj = OBJECT_ID('Student')))
EXEC (@SQL)
언급URL : https://stackoverflow.com/questions/13948344/drop-primary-key-using-script-in-sql-server-database
반응형
'programing' 카테고리의 다른 글
Microsoft를 사용하여 Excel 2010의 데이터 읽기사무실. 인터럽트.엑셀 (0) | 2023.07.05 |
---|---|
Ruby 1.9.2가 LOAD_PATH에서 "."를 제거하는 이유는 무엇이며, 그 대안은 무엇입니까? (0) | 2023.07.05 |
저장소 기본 클래스를 스프링 부트 자동 구성에 등록하는 방법이 있습니까? (0) | 2023.07.05 |
Node.js에서 데이터베이스 관련 경합 조건 방지 (0) | 2023.07.05 |
키보드를 제거하는 쉬운 방법? (0) | 2023.07.05 |