Oracle의 기존 테이블에 자동 증가 기본 키 추가
이 질문에 이미 답변이 있습니다.
데이터가있는 기존 테이블에 새 자동 증가 기본 열을 추가하고 싶습니다. 어떻게하나요?
먼저 열을 추가 한 다음 시퀀스를 추가하려고했지만 해당 열을 기본 키로 삽입하고 만드는 방법을 잃었습니다.
테이블이 호출 t1
되고 기본 키가 호출 되었다고 가정합니다. id
먼저 시퀀스를 만듭니다.
create sequence t1_seq start with 1 increment by 1 nomaxvalue;
그런 다음 삽입시 증가하는 트리거를 만듭니다.
create trigger t1_trigger
before insert on t1
for each row
begin
select t1_seq.nextval into :new.id from dual;
end;
열과 시퀀스가있는 경우 먼저 모든 기존 행에 대해 새 키를 채워야합니다. 어떤 키가 어떤 행에 할당되어 있는지 신경 쓰지 않는다고 가정합니다.
UPDATE table_name
SET new_pk_column = sequence_name.nextval;
완료되면 기본 키 제약 조건을 만들 수 있습니다 (이는 기존 기본 키 제약 조건이 없거나 기존 기본 키 제약 조건을 이미 삭제했다고 가정).
ALTER TABLE table_name
ADD CONSTRAINT pk_table_name PRIMARY KEY( new_pk_column )
키를 자동으로 생성하려면 트리거를 추가해야합니다.
CREATE TRIGGER trigger_name
BEFORE INSERT ON table_name
FOR EACH ROW
BEGIN
:new.new_pk_column := sequence_name.nextval;
END;
이전 버전의 Oracle을 사용하는 경우 구문이 조금 더 복잡합니다.
CREATE TRIGGER trigger_name
BEFORE INSERT ON table_name
FOR EACH ROW
BEGIN
SELECT sequence_name.nextval
INTO :new.new_pk_column
FROM dual;
END;
Oracle OTN 포럼 에서 Snagged
다음과 같이 열을 추가하려면 alter table을 사용하십시오.
alter table tableName add(columnName NUMBER);
그런 다음 시퀀스를 만듭니다.
CREATE SEQUENCE SEQ_ID
START WITH 1
INCREMENT BY 1
MAXVALUE 99999999
MINVALUE 1
NOCYCLE;
그리고 다음과 update
같은 열에 값을 삽입 하는 데 사용
UPDATE tableName SET columnName = seq_test_id.NEXTVAL
Oracle Data Modeler 를 사용하여 자동 증분 대리 키를 만들 수 있습니다 .
1 단계.-관계형 다이어그램 만들기
먼저 논리 다이어그램과 엔지니어를 만들어 관계형 다이어그램을 만들거나 곧바로 관계형 다이어그램을 만들 수 있습니다.
Add the entity (table) that required to have auto incremented PK, select the type of the PK as Integer.
Step 2. - Edit PK Column Property
Get the properties of the PK column. You can double click the name of the column or click on the 'Properties' button.
Column Properties dialog box appears.
Select the General Tab (Default Selection for the first time). Then select both the 'Auto Increment' and 'Identity Column' check boxes.
Step 3. - Additional Information
Additional information relating to the auto increment can be specified by selecting the 'Auto Increment' tab.
- Start With
- Increment By
- Min Value
- Max Value
- Cycle
- Disable Cache
- Order
- Sequence Name
- Trigger Name
- Generate Trigger
It is usually a good idea to mention the sequence name, so that it will be useful in PL/SQL.
Click OK (Apply) to the Column Properties dialog box.
Click OK (Apply) to the Table Properties dialog box.
Table appears in the Relational Diagram.
'code' 카테고리의 다른 글
PhantomJS 인스턴스의 '풀'을 관리하는 방법 (0) | 2020.11.15 |
---|---|
Meteor의 반응성은 배후에서 어떻게 작동합니까? (0) | 2020.11.15 |
Node.js 스크립트에 대한 적절한 해시 뱅 (0) | 2020.11.15 |
C의 포인터에서 배열의 크기를 어떻게 얻을 수 있습니까? (0) | 2020.11.15 |
C #에서 File과 FileInfo의 차이점은 무엇입니까? (0) | 2020.11.15 |