반응형
Oracle SQL - 테이블에 기본 키 추가
기본 키가 없는 열이 몇 개 있는데 기본 키 열을 추가하려고 합니다.
NAME Age
-------------
Peter 45
Bob 25
John 56
Peter 45
일부 수집가들은 시퀀스와 트리거가 있는 PK를 추가할 것을 제안합니다.Oracle의 기존 테이블에 자동 증분 기본 키 추가
이것은 좋지만, 고객은 시퀀스나 트리거를 추가할 권한이 없는 데이터베이스 사용자를 사용합니다.사용자 권한을 변경하거나 스크립트를 실행하기 위해 수십 명의 DBA 관리자에게 연락하는 것을 방지하고 싶습니다.
이것은 업데이트 문만 포함된 PK를 추가하는 것에 대한 저의 제안입니다. (2단계에서 도움이 필요합니다.)
1단계: ID 열을 만듭니다(이에 대한 DB 권한이 있습니다).
ALTER TABLE PERSON ADD ID NUMBER(10,0);
2단계: 질문: 행 순서 등에 따라 고유한 값으로 ID 열을 초기화할 수 있습니까? 어떻게 해야 합니까?
UPDATE PERSON SET ID = something-unique
3단계: 단어 뒤에 기본 키 제약 조건 추가: (IDB는 이에 대한 권한을 가집니다)
ALTER TABLE PERSON ADD CONSTRAINT PK_ID PRIMARY KEY(ID);
4단계: Afterwords: 기본 키는 내 응용 프로그램에 의해 관리되고 추가됩니다.
결과는 다음과 같습니다.
ID(PK) NAME Age
---------------------
1 Peter 45
2 Bob 25
3 John 56
4 Peter 45
여러분 감사합니다!
Update person set id = rownum;
이 아이디어는 매우 유치하지만 테이블에 행 수가 많지 않으면 잘 작동합니다.
2단계의 경우 다음과 같이 for 루프를 실행합니다.
declare
i pls_integer :=1;
begin
for rec in (select name,age, rowid from table_name)
loop
update table_name set id = i
where
table_name.name=rec.name
and table_name.age=rec.age
and table_name.rowid = rec.rowid;
i:=i+1;
end loop;
end;
언급URL : https://stackoverflow.com/questions/19807314/oracle-sql-add-primary-key-to-table
반응형
'programing' 카테고리의 다른 글
iOS SDK - 프로그래밍 방식으로 PDF 파일 생성 (0) | 2023.07.30 |
---|---|
Android 앱에서 배경색을 변경하는 방법 (0) | 2023.07.30 |
문자열 클래스에서 처음 N자만 반환하는 메서드는 무엇입니까? (0) | 2023.07.25 |
문자열을 인코딩하면 DECoding 오류(UnicodeDecodeError)가 발생하는 이유는 무엇입니까? (0) | 2023.07.25 |
MySQL 및 주석 (0) | 2023.07.25 |