데이터베이스의 일부 기존 테이블에 기본 키 추가

아민 도메니코

600 개가 넘는 테이블이있는 데이터베이스가 있습니다. 일부 테이블에는 기본 키가 있고 일부는 그렇지 않습니다. 동적으로 수행하는 방법 :

1. 모든 테이블을 반복합니다
. 2. 기본 키가없는 테이블을 선택합니다.
3. 자동 증분 필드를 추가합니다
. 4.이 필드를 기본 키로 만듭니다.

나는 그것이 다음의 조합이라고 생각합니다.

USE MyDataBase; 
GO
-- List all tables without primary constraint
SELECT i.name AS IndexName, 
    OBJECT_NAME(ic.OBJECT_ID) AS TableName, 
    COL_NAME(ic.OBJECT_ID,ic.column_id) AS ColumnName
FROM sys.indexes AS i
INNER JOIN sys.index_columns AS ic
ON i.OBJECT_ID = ic.OBJECT_ID
AND i.index_id = ic.index_id
WHERE i.is_primary_key = 0
GO

-- add new auto incremented field
ALTER TABLE MyTable 
ADD PK_ID BIGINT IDENTITY;
GO

-- create new primary key constraint
ALTER TABLE MyTable 
ADD CONSTRAINT PK_ID PRIMARY KEY NONCLUSTERED (PK_ID);
GO
BICube

이 쿼리는 기본 키 또는 ID 열이있는 모든 테이블을 제외하고 나머지 개체에 ID 열과 기본 키를 추가합니다.

DECLARE @PKScript AS VARCHAR(max) = '';
SELECT @PKScript += 
    '  ALTER TABLE ' + QUOTENAME(SCHEMA_NAME(obj.SCHEMA_ID))+'.'+ QUOTENAME(obj.name) + 
                      ' ADD PK_ID BIGINT IDENTITY;' +
     ' ALTER TABLE ' + QUOTENAME(SCHEMA_NAME(obj.SCHEMA_ID))+'.'+QUOTENAME(obj.name) + 
                     ' ADD CONSTRAINT PK_ID_' + obj.name+ ' PRIMARY KEY NONCLUSTERED (PK_ID) '
 FROM sys.objects obj
 WHERE object_id not in
     (select parent_object_id
      from sys.key_constraints 
      where type = 'PK'
      UNION
      Select object_id
      from sys.identity_columns
      )
      AND type = 'U'
--PRINT (@PKScript);
EXEC(@PKScript);  

이미 ID 열이 정의 된 테이블의 경우이 쿼리를 사용하여이 ID 열을 기본 키로 설정할 수 있습니다 (동일한 테이블에 두 개의 ID 열을 가질 수 없기 때문).

DECLARE @PKScript2 VARCHAR(max)='';

SELECT @PKScript2 += ' ALTER TABLE ' + QUOTENAME(SCHEMA_NAME(obj.SCHEMA_ID))+'.'+
       QUOTENAME(obj.name) + ' ADD CONSTRAINT PK_' + icol.name +'_'+ obj.name+
       ' PRIMARY KEY NONCLUSTERED (' + QUOTENAME(icol.name) + ')' + CHAR(13)
FROM sys.identity_columns icol INNER JOIN 
     sys.objects obj on icol.object_id= obj.object_id
WHERE NOT EXISTS (SELECT * FROM sys.key_constraints k
                  WHERE k.parent_object_id = obj.object_id
                        AND k.type = 'PK')
      AND obj.type = 'U'
--PRINT (@PKScript2);
EXEC(@PKScript2);   

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

데이터베이스의 일부 기존 테이블에 기본 키 추가

분류에서Dev

기본 키 및 외래 키의 일부가 아닌 특정 데이터베이스의 모든 테이블에서 모든 열을 검색하는 방법

분류에서Dev

아직 하나가없는 데이터베이스의 모든 테이블에 기본 키 추가

분류에서Dev

기본 키가 자동 생성되는 다른 기존 테이블에 한 테이블의 행 추가

분류에서Dev

기본 키 문제가있는 동일한 구조의 데이터베이스 복사본

분류에서Dev

LINQ to SQL 및 단일 기본 키에 대한 외부 테이블에 여러 레코드 추가

분류에서Dev

MySQL 데이터베이스 A의 테이블에서 데이터베이스 B의 기존 테이블에 행을 추가하는 방법

분류에서Dev

asp.net 코어의 첫 번째 실행에 테이블에 일부 데이터를 추가 (채우기 데이터베이스)

분류에서Dev

여러 테이블의 데이터베이스 설계 기본 키는 하나의 테이블에 연결

분류에서Dev

MySQL-기존 테이블에 외래 키 추가

분류에서Dev

Pandas 데이터 프레임을 기본 키로 sqlite 테이블에 추가

분류에서Dev

EF Core에서 데이터베이스 테이블 기본 키 열 목록을 가져 오는 방법

분류에서Dev

레일에 루비의 기존 테이블에 새 열 ** 첨부 ** 추가

분류에서Dev

데이터베이스 테이블 기본 키

분류에서Dev

기본 키 외래 키의 일부로있는 테이블에 데이터 삽입-Entity Framework

분류에서Dev

데이터베이스 두 개의 기본 키에 액세스

분류에서Dev

데이터베이스 테이블에 데이터를로드 한 SSIS 패키지 가져 오기

분류에서Dev

원격 서버의 테이블에 기존 데이터가있을 때 테이블에 외래 키를 추가합니까?

분류에서Dev

기존 테이블에 단일 행 추가

분류에서Dev

데이터가있는 기존 테이블에 외래 키를 추가 할 수 있습니까?

분류에서Dev

데이터가있는 기존 테이블에 외래 키를 추가 할 수 있습니까?

분류에서Dev

데이터베이스의 User 테이블에 대한 기본 키로 Firebase UID를 사용해야하나요?

분류에서Dev

테이블의 외래 키가 기본 키로 세 개의 다른 테이블이 될 수 있습니까 (각 테이블 기본 키 데이터가 다름)?

분류에서Dev

csv 파일의 데이터를 기존 mysql 테이블에 추가 할 수 있습니까?

분류에서Dev

기본 키 자동 증가를 사용하여 SQL에 데이터 테이블 추가 C #

분류에서Dev

텍스트 파일에서 데이터를 가져올 때 기존 사전 키에 값 추가 (Python 3)

분류에서Dev

장고. 데이터베이스에 양식 저장 후 개체의 기본 키 가져 오기

분류에서Dev

기존 Rails 데이터베이스에 외래 키를 어떻게 자동으로 추가합니까?

분류에서Dev

모든 열이 Null 허용 인 테이블을 기반으로하는 뷰의 기존 열에 Entity Framework의 기본 키 추가

Related 관련 기사

  1. 1

    데이터베이스의 일부 기존 테이블에 기본 키 추가

  2. 2

    기본 키 및 외래 키의 일부가 아닌 특정 데이터베이스의 모든 테이블에서 모든 열을 검색하는 방법

  3. 3

    아직 하나가없는 데이터베이스의 모든 테이블에 기본 키 추가

  4. 4

    기본 키가 자동 생성되는 다른 기존 테이블에 한 테이블의 행 추가

  5. 5

    기본 키 문제가있는 동일한 구조의 데이터베이스 복사본

  6. 6

    LINQ to SQL 및 단일 기본 키에 대한 외부 테이블에 여러 레코드 추가

  7. 7

    MySQL 데이터베이스 A의 테이블에서 데이터베이스 B의 기존 테이블에 행을 추가하는 방법

  8. 8

    asp.net 코어의 첫 번째 실행에 테이블에 일부 데이터를 추가 (채우기 데이터베이스)

  9. 9

    여러 테이블의 데이터베이스 설계 기본 키는 하나의 테이블에 연결

  10. 10

    MySQL-기존 테이블에 외래 키 추가

  11. 11

    Pandas 데이터 프레임을 기본 키로 sqlite 테이블에 추가

  12. 12

    EF Core에서 데이터베이스 테이블 기본 키 열 목록을 가져 오는 방법

  13. 13

    레일에 루비의 기존 테이블에 새 열 ** 첨부 ** 추가

  14. 14

    데이터베이스 테이블 기본 키

  15. 15

    기본 키 외래 키의 일부로있는 테이블에 데이터 삽입-Entity Framework

  16. 16

    데이터베이스 두 개의 기본 키에 액세스

  17. 17

    데이터베이스 테이블에 데이터를로드 한 SSIS 패키지 가져 오기

  18. 18

    원격 서버의 테이블에 기존 데이터가있을 때 테이블에 외래 키를 추가합니까?

  19. 19

    기존 테이블에 단일 행 추가

  20. 20

    데이터가있는 기존 테이블에 외래 키를 추가 할 수 있습니까?

  21. 21

    데이터가있는 기존 테이블에 외래 키를 추가 할 수 있습니까?

  22. 22

    데이터베이스의 User 테이블에 대한 기본 키로 Firebase UID를 사용해야하나요?

  23. 23

    테이블의 외래 키가 기본 키로 세 개의 다른 테이블이 될 수 있습니까 (각 테이블 기본 키 데이터가 다름)?

  24. 24

    csv 파일의 데이터를 기존 mysql 테이블에 추가 할 수 있습니까?

  25. 25

    기본 키 자동 증가를 사용하여 SQL에 데이터 테이블 추가 C #

  26. 26

    텍스트 파일에서 데이터를 가져올 때 기존 사전 키에 값 추가 (Python 3)

  27. 27

    장고. 데이터베이스에 양식 저장 후 개체의 기본 키 가져 오기

  28. 28

    기존 Rails 데이터베이스에 외래 키를 어떻게 자동으로 추가합니까?

  29. 29

    모든 열이 Null 허용 인 테이블을 기반으로하는 뷰의 기존 열에 Entity Framework의 기본 키 추가

뜨겁다태그

보관