programing

SQL Server 데이터베이스에서 스크립트를 사용하여 기본 키 삭제

abcjava 2023. 7. 5. 20:01
반응형

SQL Server 데이터베이스에서 스크립트를 사용하여 기본 키 삭제

테이블의 기본 키를 삭제해야 합니다.StudentSQL 서버 데이터베이스에 있습니다.

나는 표에서 편집을 했고 내가 받은 스크립트는

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

반응형