source

Oracle의 SQL Server에서 IDENTITY INSERT ON/OFF를 대체할 명령은 무엇입니까?

manysource 2023. 9. 27. 18:02

Oracle의 SQL Server에서 IDENTITY INSERT ON/OFF를 대체할 명령은 무엇입니까?

이 쿼리(여기서는 단순화)를 T-SQL에서 ORACLE로 마이그레이션해야 합니다.

SET IDENTITY_INSERT table ON

INSERT INTO table (id, value) VALUES (1, 2)

SET IDENTITY_INSERT table OFF

idSQL Server의 ID 필드입니다.

ORACLE에 시퀀스가 있는 동일한 테이블이 있는데 시퀀스를 비활성화하고 MAX(id) + 1로 다시 시작하도록 설정하는 방법을 보여주는 스니펫을 찾을 수 없었습니다.

ORACLE 전문가가 도와줄 수 있습니까?

고마워, 로드리고.

Oracle에서 ID를 비활성화할 필요는 없습니다.시퀀스를 사용하고 있으므로 해당 삽입에 사용하지 마십시오.

즉, 대신에

insert into table (id, values) values (table_seq.nextval, 2)

당신이 사용합니다

insert into table (id, values) values (1, 2)

시퀀스를 다시 시작하는 것에 대한 당신의 두 번째 질문에 대해, 저는 그것이 여기 SO에서 대답되었다고 생각합니다.

이런 식으로 오라클 시퀀스로 채워진 열을 건드리는 것은 나쁜 생각인 것 같습니다.Oracle에서는 일반적으로 트리거가 있는 시퀀스를 통해 열이 채워진 상태를 유지합니다.이 기능을 켜고 끄기 시작하고 시퀀스 애드립을 재설정하면 다른 프로세스에서 필요할 때 시퀀스를 사용할 수 없거나 이미 사용되었지만 커밋되지 않은 값으로 재설정될 위험이 있습니다.

max+1 값이 끝나면 시퀀스를 삭제하고 다시 생성합니다.

언급URL : https://stackoverflow.com/questions/2758990/which-command-would-replace-identity-insert-on-off-from-sqlserver-in-oracle