ODBC를 통해 다양한 데이터베이스 (SQL, Access, Oracle)에 데이터를 쓰려고하는 기존 코드를 업데이트하려고하지만 Oracle 및 SQL에 몇 가지 문제가 있습니다. 제안을 찾고 있습니다.오라클 트리거 키 열이있는 ODBC
트리거 (기본 튜토리얼 온라인 지원)를 사용하여 Oracle 데이터베이스를 설정했습니다.
CREATE TABLE TABLE1 (
RECORDID NUMBER NOT NULL PRIMARY KEY,
ID VARCHAR(40) NULL,
COUNT NUMBER NULL
);
GO
CREATE SEQUENCE TABLE1_SEQ
GO
CREATE or REPLACE TRIGGER TABLE1_TRG
BEFORE INSERT ON TABLE1
FOR EACH ROW
WHEN (new.RECORDID IS NULL)
BEGIN
SELECT TABLE1_SEQ.nextval
INTO :new.RECORDID
FROM dual;
end;
GO
그런 다음 SELECT * FROM TABLE1
을 사용하여 DataTable을 채 웁니다. 첫 번째 문제는이 DataTable이 RecordId 열이 자동 생성되었음을 알지 못한다는 것입니다. 내 테이블에 데이터가있는 경우 내가 에 데이터가 일단
유형 '더블'으로 DataColumn에의 자동 증가를 변경할 수 없습니다
오류를 얻을 수 있기 때문에 나는 그것을 변경할 수 없습니다.
계속 진행하면 이것을 무시하고 곧바로 붙잡 힙니다. 새 DataRow를 만들고 삽입하려고하면 열이 null이 아니어야 함 (NoNullAllowedException)이 발생하기 때문에 RecordID를 DBNull.Value로 설정할 수 없습니다. 그러나 나는 값을 직접 생성 할 수 없다. 왜냐하면 내가 정말로 사용해야하는 값을 알지 못하고 다음으로 사용 가능한 값을 사용하여 트리거를 망치고 싶지 않기 때문이다.
ODBC를 사용하지 않고 데이터를 삽입하는 방법에 대한 제안 사항은 무엇입니까?
WHEN 절에 'new'앞에 콜론이 없어야합니까? –