Я пытаюсь обновить существующий код, который должен записывать данные в различные базы данных (SQL, Access, Oracle) через ODBC, но у меня возникли некоторые проблемы с Oracle, и я ищу любые предложения.
Я настроил базу данных Oracle с помощью Trigger (базовое онлайн-руководство, которое я хотел бы поддержать).
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 не знает, что столбец RecordId генерируется автоматически. Если у меня есть данные в моей таблице, я не могу их изменить, потому что я получаю ошибку
Невозможно изменить автоинкремент DataColumn с типом 'Double' после его
имеет данные.
Если я продолжу игнорировать это, то быстро застряну. Если я создаю новый DataRow и пытаюсь вставить его, я не могу установить RecordID в DBNull.Value, потому что он жалуется, что столбец должен быть ненулевым (NoNullAllowedException). Однако я не могу сгенерировать значение самостоятельно, потому что я не знаю, какое значение мне следует использовать на самом деле, и не хочу испортить триггер, используя следующее доступное значение.
Любые предложения о том, как я должен вставлять данные без жалоб ODBC?